【问题标题】:apply function for combination of group组合组的应用函数
【发布时间】:2021-10-08 09:29:44
【问题描述】:

我正在尝试从我的函数中删除一个 for 循环,因为在更大的数据集中执行它似乎需要大量时间

该函数的基本作用是创建一个新矩阵,其中包含来自组组合的数据总和

library(dplyr)
data(iris)
for (Gnum_1 in 1:length(unique(iris$Species))) {
  for (Gnum_2 in 1:length(unique(iris$Species))) {
    if (Gnum_2 <= Gnum_1) {
      next
    }
    else {
Data_1<-iris %>% dplyr::filter(Species ==as.character(unique(iris$Species)[Gnum_1]))
Data_2<-iris %>% dplyr::filter(Species ==as.character(unique(iris$Species)[Gnum_2]))

print(sum(Data_1$Sepal.Width,Data_2$Sepal.Width))
    }}}

任何建议将不胜感激

提前谢谢你!

【问题讨论】:

    标签: r for-loop apply


    【解决方案1】:

    您可以使用combn 函数,该函数将为您提供所有独特的组合,并为每个组合获取sumSepal.Width 值。

    combn(as.character(unique(iris$Species)), 2, function(x) {
      sum(iris$Sepal.Width[iris$Species %in% x])
    })
    
    #[1] 309.9 320.1 287.2
    

    【讨论】:

      猜你喜欢
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      相关资源
      最近更新 更多