poligono para pairs librerias graficos grafico graficas graficar grafica ejemplos cuadricula animados r dataframe lapply

para - Imprima la quinta fila en una lista de marcos de datos



poligono en r (4)

Mi sugerencia es escribir una función que haga lo que desee en un único marco de datos:

myfun <- function(dat) { return(dat[4, , drop=FALSE]) }

Si desea regresar como vector en lugar de data.frame , simplemente haga lo siguiente: return(dat[4, ]) insteaad. A continuación, utilice lapply para aplicar esa función a cada elemento de su lista:

lapply(df.list1, myfun)

Con esa técnica, puede encontrar formas de extender myfun a funciones más complejas ...

Estoy limpiando varios archivos de Excel en R. Desafortunadamente son de dimensiones, filas y columnas desiguales. Actualmente estoy almacenando cada hoja de Excel como un marco de datos en una lista. Sé cómo imprimir la cuarta fila del primer marco de datos en una lista al emitir este comando:

df.list1[[1]][4,]

O un rango de filas como esta:

df.list1[[1]][1:10,]

Mi pregunta es: ¿cómo imprimo una fila en particular para cada marco de datos en la lista? En otras palabras:

df.list1[[i]][4,]

df.list1 tiene 30 marcos de datos, pero mis otras df.lists tienen más de 140 marcos de datos que estoy buscando para extraer sus filas. Me gustaría poder almacenar ubicaciones particulares en varios marcos de datos en una nueva lista. Estoy pensando que la solución podría involucrar lapply .

Además, ¿hay alguna forma de extraer filas en cada marco de datos en una lista basada en una condición? Por ejemplo, para los 30 marcos de datos en la lista df.list1, extraiga la fila si el valor es igual a "Apartamento" o alguna otra cadena de caracteres.

Apreciar tu ayuda, por favor avísame si puedo ayudar a aclarar mi problema.


No hay necesidad de una función de contenedor, solo use lapply y pasarle un argumento en blanco al final (para representar las columnas)

lapply(df.list, `[`, 4, )

Esto también funciona con cualquier tipo de argumento de fila que normalmente usaría en myDF[ . , ] myDF[ . , ] por ejemplo: lapply(df.list, [ , c(2, 4:6), )

.

Sugeriría que si vas a utilizar una función de contenedor, haz que funcione más como [ hace: por ej.

Grab(df.list, 2:3, 1:5) seleccionaría la segunda y tercera fila y la primera hasta la quinta columna de cada data.frame y Grab (df.list, 2:3) seleccionaría la segunda y tercera fila de todas las columnas

Grab <- function(ll, rows, cols) { if (missing(cols)) lapply(ll, `[`, rows, ) else lapply(ll, `[`, rows, cols) } Grab (df.list, 2:3)


Por ejemplo, tiene un archivo .csv llamado hw1_data.csv y desea recuperar la 47.a fila. Aquí es cómo hacer eso:

x<-read.csv("hw1_data.csv") x[47,]

Si es un archivo de texto, puede usar read.table .


También podría lapply directamente la función de extracción @Justin sugiere, por ejemplo:

# example data of a list containing 10 data frames: test <- replicate(10,data.frame(a=1:10),simplify=FALSE) # extract the fourth row of each one - setting drop=FALSE means you get a # data frame returned even if only one vector/column needs to be returned. lapply(test,"[",4,,drop=FALSE)

El formato es:

lapply(listname,"[",rows.to.return,cols.to.return,drop=FALSE) # the example returns the fourth row only from each data frame #[[1]] # a #4 4 # #[[2]] # a #4 4 # etc...

Para generalizar esto cuando está completando una extracción basada en una condición, debería cambiarla un poco a algo como el siguiente ejemplo extrayendo todas las filas donde a en cada data.frame es >4 . En este caso, usar una función anónima es probablemente el método más claro, por ejemplo:

lapply(test, function(x) with(x,x[a>4,,drop=FALSE]) ) #[[1]] # a #5 5 #6 6 #7 7 #8 8 #9 9 #10 10 # etc...