swirl - superponer graficas en r
Utilizar lapply para aplicar una función sobre la lista de marcos de datos y guardar los resultados en archivos con diferentes nombres (2)
Tengo una lista de marcos de datos y le he dado a cada elemento de la lista (por ejemplo, cada marco de datos) un nombre:
p.ej
df1 <- data.frame(x = c(1:5), y = c(11:15))
df2 <- data.frame(x = c(1:5), y = c(11:15))
mylist <- list(A = df1, B = df2)
Tengo una función que deseo aplicar a cada marco de datos; En esta función, quiero incluir una línea para escribir los resultados en un archivo (eventualmente quiero hacer cosas más complicadas como guardar tramas de la correlación entre dos variables para cada marco de datos, pero pensé que comenzaría de manera simple)
p.ej
NewVar <- function(mydata, whichVar, i) {
mydata$newVar <- mydata[, whichVar] + 1
write.csv(mydata, file = i)
}
Quiero usar lapply()
para aplicar esta función a cada marco de datos en mi lista
algo como:
hh<-lapply(mylist, NewVar, whichVar = "y")
No puedo encontrar la forma de asignar la "i" dentro del contexto de lapply para que itere sobre los nombres en la lista de marcos de datos, guardando varios archivos con diferentes nombres (en este caso, dos archivos llamados A
y B
) que se corresponden con los marcos de datos modificados.
Funcionará con la siguiente lapply
solicitud:
lapply(names(mylist), function(x) NewVar(mylist[[x]], "y", x))
Hay muchas opciones Por ejemplo:
lapply(names(mylist),
function(x)write.csv(mylist[x],
file =paste0(x,''.csv'')))
o usando índices:
lapply(seq_along(mylist),
function(i)write.csv(mylist[i],
file =paste0(names(mylist)[i],''.csv'')))