/ / Cómo puede enviar una lista / vector / matriz de marcos de datos a una función en R - r, marco de datos

¿Cómo se puede enviar una lista / vector / conjunto de marcos de datos a una función en R - r, marco de datos?

Necesito pasar varios marcos de datos, cada uno de diferentes dimensiones a otra función y procesar cada uno de estos marcos de datos uno por uno. Cómo debería hacer esto.

Lo intenté

frame <- c(df1,df2,df3...)

p <- function(frame) {
for(i in 1:seq_along(frame) {
do_something(frame[i])
.....
}
}

Pero esto no funciona.

Respuestas

1 para la respuesta № 1

Es importante notar la diferencia entrevectores y listas en R. Los vectores contienen objetos atómicos (simples) de clases idénticas (es decir, todos numéricos, todos los caracteres, etc.). Las listas pueden contener objetos de tipo heterogéneo. Las listas también pueden contener otras listas (los vectores no se pueden anidar).

En R, data.frames son realmente listas sofisticadas, por lo que si desea tener una colección de ellos, necesitará una lista de data.frames

frame <- list(df1,df2,df3...)

Cuando extrae objetos de una lista, debe usar [[ ]] para obtener el elemento en lugar de [ ] que solo se usa para subconjuntar una lista (y siempre devolverá una lista). Entonces tu ciclo debe escribirse como

p <- function(frame) {
for(i in 1:seq_along(frame)) {
do_something(frame[[i]])
}
}

Pero rara vez necesitamos escribir algo así en R. A menudo es mejor simplemente lapply sobre una lista

p <- function(frame) {
lapply(frame, do_something)
}

pero en última instancia, eso depende de lo que realmente esté haciendo su código.