R 聚合错误: "替换有 <foo> 行,数据有 <bar> 行"

4

我正在尝试聚合数据框,但出现了一个我不理解的错误。 我有一个名为M15的数据帧,其中包含200k +记录的33个变量。 我无法使用可以与社区共享的数据复制此错误。

M15<-M15backup[c(600:700),]

# setting the fields to roll up
aggField<-c('Location','EEStatus')

# group by rest of fields
byField<-setdiff(x=colnames(M15),y=aggField)

# example uses built in function, my production code uses a custom
M15.2<-aggregate(x=M15[aggField],
             by=M15[byField],
             FUN=length
             )

如果我调整第一行中的600:700,我可以让脚本在数据框的小块上运行,但是如果我对整个数据框运行,就会出现以下形式的错误:
Error in `[[<-.data.frame`(`*tmp*`, len + i, value = c("All Locations",  : 
  replacement has 341 rows, data has 394

有人能解释一下这个错误是什么意思,或者提出处理它的方法吗?

1
你的aggregate函数中的变量x不能有两个列。你需要将它们合并为一个向量。当行数很多时,aggregate函数也会非常慢。建议使用data.table或SQL数据库。 - nograpes
2
我的实际经验与你的说法不符:“如果我在第一行调整600:700,我可以让脚本在数据框的小块上运行”。 - Adam Hoelscher
此外,如果我删掉正在聚合的变量并针对相同的观测子集运行,则仍会收到相同的错误。 - Adam Hoelscher
1个回答

4

根据这个错误报告,这显然是R版本3.0.3之前的一个错误。我遇到了同样的问题,将R升级到3.1.2版本后,问题得以解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接