下面是一个缺少值的简单数据框:
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
当我使用formula
方法按组("名称")使用aggregate
到sum
个变量时:
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
分制被区别对待有什么好的理由吗?
谢谢