Как поместить data.frames, хранящиеся в списке?
Я создал список и сохранил один фрейм данных в каждом компоненте. Теперь я хотел бы отфильтровать эти фреймы данных, сохранив только те строки, которые имеют NA в определенном столбце. Я хотел бы, чтобы результатом этой операции был другой список, содержащий фреймы данных, только с теми строками, которые имеют NA в этом столбце.
Вот код, чтобы уточнить, что я говорю. Предполагатьd1
а такжеd2
мои фреймы данных
set.seed(1)
d1<-data.frame(a=rnorm(5), b=c(rep(2006, times=4),NA))
d2<-data.frame(a=1:5, b=c(2007, 2007, NA, NA, 2007))
print(d1)
a b
1.3011543 2006
0.3780023 2006
-0.3101449 2006
-1.3927445 2006
-1.0726218 NA
print(d2)
a b
1 2007
2 2007
3 NA
4 NA
5 2007
который я помещаю в список с циклом for
ls<-list()
for (i in 1:2){
str<-paste("d", i, sep="")
dat<-get(str)
ls[[str]]<-dat
}
Теперь я хотел бы отфильтровать каждый компонент списка, чтобы оставить только строки столбца b, содержащие NA. Для этого я попытался использовать следующую команду, зная с самого начала, что она потерпит неудачу. Моя проблема в том, что я не знаю,subset()
это правильная функция для использования, и, если это так, я не знаю, как квалифицировать каждый кадр данных (то есть первый элемент функции подмножества)
lsNA<-lapply(ls, subset(ls, is.na(b)))
Можете ли вы помочь мне преодолеть мои серьезные ограничения?