Вот простой кадр данных с отсутствующим значением:
M = data.frame( Name = c('name','name'), Col1 = c(NA,1) , Col2 = c(1,1))
Когда я применяю агрегат к M следующим образом:
aggregate(.~Name, M, FUN=sum, na.rm=TRUE)
результат:
RowName Col1 Col2
name 1 1
Таким образом, вся первая строка игнорируется. Но если я делаю
aggregate(M[,2:3], by=list(M$Name), FUN=sum, na.rm=TRUE)
результат
Group.1 Col1 Col2
name 1 2
Таким образом, игнорируется только запись (1,1).
Это вызвало серьезную головную боль отладки в одном из моих кодов, так как я думал, что эти два вызова эквивалентны. Есть ли веская причина, почему метод ввода "формула" обрабатывается по-разному?
Спасибо.