2017-01-04 1 views
6

dplyr фильтр не работает, когда у меня есть подмножество списка в значении проверки. Работает, когда я назначаю переменную. См. Код нижеФильтр R dplyr не работает правильно с мягко сложным фильтром

df1<-data.frame(x=1:26, y=letters, stringsAsFactors = F) 
templist<-list(alpha=df1) 
res<-df1 %>% filter(y %in% templist$alpha$y) 
nrow(res) 
[1] 0 
tempLetters <- templist$alpha$y 
res<-df1 %>% filter(y %in% tempLetters) 
nrow(res) 
[1] 26 

Я думал, что раньше это работало. Пожалуйста помоги. Обратите внимание, что имена столбцов одинаковы для обоих (y) по дизайну.

Я обновил dplyr, tidyr, pipeR до последних версий на лесоматериал только сейчас (4 января 2017)

+3

Я думаю, что это может быть ошибка или имя столкновения, попробуйте с помощью 'filter (df1, y% in% templist $ alpha [[2]])' или даже 'filter (df1, y% in% templist $ alpha [["y"]]) ' – akrun

+0

Вы уверены, что' filter() '- это функция, которую вы хотите? 'Select()' может быть более полезным, например 'select (df1 $ alpha, y)' или для списка 'select (templist $ alpha, y)' –

+0

Andrew Я просто дал простой пример, чтобы выделить проблему. @akrun, вы правы. Проблема возникает при столкновении имен! – guna

ответ