Ich habe eine benannte Liste von Daten und eine benutzerdefinierte Funktion, die ich auf die Daten anwenden möchten:Passing Liste Elementnamen als Variable Funktionen innerhalb lapply
#Some example data
d.list <- list(a = c(1,2,3), b = c(4,5,6), c = c(7,8,9))
#A simple function to process some data, write an output graph, and return an output
myfun <- function(data, f.name) {
y <- list()
y[1] <- data[1] + data[2] + data[3]
y[2] <- data[3] - data[1]/ data[2]
y[3] <- data[2] * data[3] - data[1]
svg(filename = f.name, width = 7, height = 5, pointsize = 12)
plot.new()
plot(data, y)
dev.off()
return(y)
}
Ich möchte nun diese über meine Liste iterieren mit sapply
und eine gespeicherte Bilddatei für jede Iteration erhalten, wobei der Dateiname als Listenelementname (egasvg, b.svg, c.svg im obigen Beispiel) zusammen mit dem Datenrahmen, der die Ergebnisse der Berechnungen enthält, festgelegt wird. Als ich dies auszuführen:
#Iterate over the example data using sapply
res <- t(sapply(d.list, function(x) myfun(data=x,
f.name=paste(names(d.list), ".svg", sep = ""))))
erhalte ich den erwarteten Datenrahmen:
[,1] [,2] [,3]
a 6 2.500 5
b 15 5.200 26
c 24 8.125 65
aber ich nur mit einer Datei im Zielverzeichnis am Ende: „a.svg“
Wie kann Ich übergebe die Listenelementnamen korrekt als Parameter an die Funktion, die ich in sapply
anrufe?