遍历列和数据框以聚合R中的数据

时间:2019-03-07 21:36:17

标签: r dataframe for-loop aggregate

我正在尝试将几列中的值求和,并在多个数据帧中重复此过程。我已经在for循环之外运行了聚合函数,并且产生了预期的结果。

但是,在for循环中,尝试遍历数据帧时出现错误“找不到对象”,而尝试遍历列名时出现错误“可变长度不同”。关于如何解决这些错误中的一个或两个的任何建议?有没有更好的方法可以完全做到这一点?我已经广泛浏览了该论坛,以前的建议都没有解决该问题。感谢您的阅读!

for (i in colnames(m)){
n <- paste("m", i, sep = "")
n <- aggregate(
i~key + plot + blk + trt + field + timepoint + time_code, 
data=m, FUN = sum)
}

ilist <- list(m, d, ss, seg)
for (i in 1:length(ilist)){
n <- paste(i, sep = "")
n <- aggregate(
stems~key + plot + blk + trt + field + timepoint + time_code, 
data=i, FUN = sum)
}

2 个答案:

答案 0 :(得分:1)

在这一行:

var options = {
  "method": "POST",
  "hostname": "api.thomsonreuters.com",
...
``

您正在将数据设置为循环的索引。您需要这样做:

stems~key + plot + blk + trt + field + timepoint + time_code, data=i, FUN = sum)

我不确定这是否可以解决您的所有问题。至于您是否还有更好的方法的另一个问题-也许看看stems~key + plot + blk + trt + field + timepoint + time_code, data=ilist[i], FUN = sum)

答案 1 :(得分:1)

您似乎正在使用其他语言的for循环中的规则,而不是R的特定规则。

我将以此方式重新编写您的代码(尽管请记住,我还没有看到您的数据):

nameList <- colnames(m)    
for (i in length(nameList)){
  n <- paste(nameList[m], i, sep = "")
  n <- aggregate(
    i~key + plot + blk + trt + field + timepoint + time_code, 
    data=nameList[m], FUN = sum)
}

ilist <- list(m, d, ss, seg)
for (i in 1:length(ilist)){
  n <- paste(ilist[i], sep = "")
  n <- aggregate(
    stems~key + plot + blk + trt + field + timepoint + time_code, 
    data=ilist[i], FUN = sum)
}