2013-01-25 1 views
2

В R, в чем разница между:В R, в чем разница между объединением столбцов с помощью квадратных скобок [] []?

summary(airquality$Solar.R[(airquality$Ozone>31)&(airquality$Temp>90)]) 

VS.

summary((airquality[airquality$Ozone>31,][airquality$Temp>90,])$Solar.R) 

я получил немного разные результаты, 212,0 против 212,8 , который является более точным и лучше.

+3

Возможно, вы бы нашли ответ Джонатана самостоятельно, если бы вы тестировали вывод каждого внутреннего расчета для каждой конструкции. Всегда хорошая идея разбить проблему на небольшие шаги, чтобы увидеть, что происходит. –

ответ

12

Ваша первая команда правильная; вторая команда неверна. Вторая команда сначала выбирает строки airquality, которые имеют Ozone > 31, затем выбирают строки, соответствующие строкам airquality, которые имеют Temp > 90. Проблема в том, что ваши данные уже были подмножеством один раз, поэтому строки не выстраиваются во второй раз. Если вы делаете это таким образом численные резюме согласны с первой версией:

summary((airquality[airquality$Ozone>31,][airquality[airquality$Ozone>31,]$Temp>90,])$Solar.R) 

Хотя отсчитывает больше NA с.

Стик с первой версией.

+2

Это хороший момент для запоминания: 'DF $ Column> Value' просто сообщает R кучу значений true/false. R даже не знает/не заботится о том, чтобы эти значения поступали из фрейма данных, который вы пытаетесь подмножить. –

Смежные вопросы