Me enfrento al siguiente desafío:

Tengo una lista de marcos de datos en R y me gustaría extraer información específica de ella. Aquí hay un ejemplo:

df_1 <- data.frame(A = c(1,2), B = c(3,4), D = c(5,6))
df_2 <- data.frame(A = c(7,8), B = c(9,10), D = c(11,12))
df_3 <- data.frame(A = c(0,1), B = c(2,3), D = c(4,5))

L <- list(df_1, df_2, df_3)

Lo que me gustaría extraer son los valores en la posición (1,1) en cada uno de estos marcos de datos. En el caso anterior, esto sería: 1, 7, 0.

¿Hay alguna forma de extraer esta información fácilmente, probablemente con una línea de código?

r
1
Mohamed Madmar 19 feb. 2018 a las 11:57

2 respuestas

La mejor respuesta

Como ha sugerido Ronak, puede usar una función como lapply y envolverla con unlist para la salida deseada.

 unlist(lapply(L,function(x) x[1,1]))
1
Gangesh Dubey 19 feb. 2018 a las 09:08

Además de los métodos *apply que se muestran arriba, también puede hacer esto de manera vectorizada. Dado que todos los marcos de datos en su lista tienen los mismos nombres de columna, y desea el primer elemento de la primera columna, es decir, 'A1', entonces puede simplemente unlist (que creará un vector con nombre) y tomar el valores con el nombre A1.

v1 <- unlist(L)
v1[names(v1) == 'A1']
#A1 A1 A1 
# 1  7  0 
1
Sotos 19 feb. 2018 a las 09:50