Ich habe Funktion, die ich mit Fähigkeit erweitern kann, Ergebnisse in csv Akte zu speichern. Der Name der CSV-Datei werden sollten, um diese Funktion übergeben auf data.frame Namen generiert basierend:Wie man Name von data.frame von der Liste erhielt, funktionierte mit lapply
my.func1 <- function(dframe, ...){
# PART OF CODE RESPONSIBLE FOR COMPUTATION
# ...
# PART OF CODE WHERE I WANT TO STORE RESULTS AS CSV
csv <- deparse(substitute(dframe))
csv
}
Wenn ich diese Funktion aufrufen folgt dann der Name des Datensatzes an diese Funktion übergeben korrekt interpretiert wird:
> my.func1(mtcars)
[1] "mtcars"
Aber ich muss diese Funktion für jeden data.frame aus der Liste aufrufen. Wenn ich diese Funktion für bestimmte data.frame aus der Liste rufe dann ist es im Grunde arbeiten (ich den hässliche Name enthält auch die Liste nennen, aber eine Abhilfe trimmen könnte es regulären Ausdruck):
> LoDFs <- list(first=data.frame(y1=c(1,2,3), y2=c(4,5,6)), second=data.frame(yA=c(1,2,3), yB=c(4,5,6)))
> my.func1(LoDFs$first)
[1] "LoDFs$first"
Problem ist, wenn Ich möchte diese Funktion für alle data.frames aus der Liste aufrufen. In diesem Fall werden die Namen von data.frame sind Chaos:
> lapply(LoDFs, my.func1)
$first
[1] "X[[i]]"
$second
[1] "X[[i]]"
> lapply(seq_along(LoDFs), function(x) { my.func1(LoDFs[[x]]) })
[[1]]
[1] "LoDFs[[x]]"
[[2]]
[1] "LoDFs[[x]]"
Was mache ich falsch und wie kann ich erwähnt Abhilfe mit regulären Ausdrücken zu vermeiden und den Code robuster machen?
ich das letzte Mal mit einem ähnlichen Problem konfrontiert wurde, gab ich auf und einen Vektor der Namen gemacht der data.frames, und dann verwendet get() um den data.frame zu greifen. Für Sie etwas wie lapply (Namen (LoDFs), my.func1), wo die erste Zeile von my.funct1 ist df <- Lodf [[n]] Ich hoffe, jemand hat eine elegantere Lösung. –