Я пытаюсь подмножить DataFrame с использованием логических операторов в день года, и мне интересно, почему следующее не работает.Подмножество dataframe с использованием логических элементов в R
num <- c(11,22,33,44)
day.of.yr <- c(31,32,33,34)
dframe <- data.frame(num,day.of.yr)
num day.of.yr
1 11 31
2 22 32
3 33 33
4 44 34
target.days <- c(32,34)
# works
test1 <-dframe[(day.of.yr==target.days[1] | day.of.yr==target.days[2]),]
num day.of.yr
2 22 32
4 44 34
# doesn't work
test2 <- dframe[day.of.yr==target.days,]
num day.of.yr
4 44 34
Когда я пытаюсь его на реальных данных, R также выводит только часть того, что я хочу его для вывода, с таким предупреждением:
Warning message:
In dframe$day.of.yr == target.days :
longer object length is not a multiple of shorter object length
Было бы неплохо иметь короткий -cut способ указания нескольких строк фрейма данных на основе значений в одном столбце. Я пробовал несколько разных способов, но пока не повезло.
Спасибо за это. Мне нравится избегать использования подмножества(), если я могу, однако, из-за предупреждения в файле справки: «Это удобная функция ... Для программирования лучше использовать стандартные функции подмножества, такие как [, ... « – ginko
Конечно, перевод« dframe [dframe $ day.of.yr% in% dframe $ target.days,] '. – lmo
На самом деле это работает вместо: 'dframe [dframe $ day.of.yr% in% target.days,]' – ginko