¿Cómo subcontratar data.frames almacenados en una lista?
Creé una lista y almacené un marco de datos en cada componente. Ahora me gustaría filtrar esos marcos de datos manteniendo solo las filas que tienen NA en una columna específica. Me gustaría que el resultado de esta operación sea otra lista que contenga marcos de datos con solo aquellas filas que tengan NA en esa columna.
Aquí hay un código para aclarar lo que estoy diciendo. Asumird1
yd2
son mis marcos de datos
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
que pongo en una lista con un bucle for
ls<-list()
for (i in 1:2){
str<-paste("d", i, sep="")
dat<-get(str)
ls[[str]]<-dat
}
Ahora me gustaría filtrar cada componente de la lista para dejar solo las filas de la columna b que contienen NA. Para hacer esto intenté usar el siguiente comando, sabiendo desde el principio que habría fallado. Mi problema es que no se sisubset()
es la función correcta para usar y, en caso de que lo sea, no sé cómo calificar cada marco de datos (es decir, el primer elemento de la función de subconjunto)
lsNA<-lapply(ls, subset(ls, is.na(b)))
¿Puedes ayudarme, por favor, a superar mis severas limitaciones?