这是一个缺少值的简单数据框:
M = data.frame( Name = c('name', 'name'), Col1 = c(NA, 1) , Col2 = c(1, 1))
#   Name Col1 Col2
# 1 name   NA    1
# 2 name    1    1
当我使用以下aggregate方法sum按组('名称')使用变量时formula:
aggregate(. ~ Name, M, FUN = sum, na.rm = TRUE)
结果是:
# RowName Col1 Col2
#    name    1    1
因此,具有 的整个第一行将NA被忽略。但如果使用“非formula”规范:
aggregate(M[, 2:3], by = list(M$Name), FUN = sum, na.rm = TRUE)
结果是:
# Group.1 Col1 Col2
#    name    1    2
这里只有 (1,1) 条目被忽略。
这在我的一个代码中引起了严重的调试问题,因为我认为这两个调用是等效的。formula输入方法被区别对待是否有充分的理由?
谢谢。