Вот простой кадр данных с отсутствующим значением:NA значения и R агрегатная функция
M = data.frame(Name = c('name','name'), Col1 = c(NA,1) , Col2 = c(1,1))
Когда я применяю агрегат М следующим образом:
aggregate(.~Name, M, FUN=sum, na.rm=TRUE)
результат является:
RowName Col1 Col2
name 1 1
Таким образом, Первая строка ire игнорируется. Но если я
aggregate(M[,2:3], by=list(M$Name), FUN=sum, na.rm=TRUE)
результат
Group.1 Col1 Col2
name 1 2
Так только (1,1) запись игнорируется.
Это вызвало серьезную головную боль отладки в одном из моих кодов, поскольку я думал, что эти два вызова эквивалентны. Есть ли веская причина, почему метод ввода «формула» обрабатывается по-разному?
Спасибо.
-1 для фи Первое предложение (конечно, теперь легко выглядеть, что вы точно знаете, что ищете, но это было бы довольно нетривиально, чтобы найти irl) – eddi
@eddi, без проблем. Я знаю из вашей истории чатов и комментариев, что вам нравятся функции для работы, как вы хотите, а не как они документированы, и вы полностью открыты для этого мнения. – A5C1D2H2I1M1N2O1R2T1
@eddi - Действительно, нисходящий для этого? Я думаю, что Ананда делает там стоящую точку ... Тщательное прочтение справки, скорее, чем позже, - очень хорошая привычка учиться и спасет много головных болей по дороге! –