ich den Inhalt und Namen übergeben data.frame auf Funktion wie folgt zu erreichen:den Namen der Variablen in der Funktion erhalten, unabhängig davon, ob sie direkt übergeben oder über * an
my.func1 <- function(dframe, ...){
content <- dframe
name <- deparse(substitute(dframe))
name
}
> my.func1(mtcars)
[1] "mtcars"
Ich habe Liste der Daten .frames und ich muss diese Funktion für jeden data.frame aus dieser Liste aufrufen. Es gibt mehrere Möglichkeiten, es zu tun, erwähnt in meinem vorherigen question, zB:
> 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)))
> lapply(names(LoDFs), function(x) { x })
[[1]]
[1] "first"
[[2]]
[1] "second"
Dieser ist zu arbeiten, weil ich die Namen bin vorbei direkt zu funktionieren, und wenn ich den Inhalt data.frame innen zugreifen möchten Funktion kann ich LoDFs[[x]]
verwenden. Kann ich eine Art von Funktion schreiben, die den Namen von data.frame erhalten kann, unabhängig davon, ob sie direkt übergeben wurde (1. Beispiel) oder lapply
aus Liste (2. Beispiel) verwendet?
PS: Ich dachte, wenn es irgendwie möglich wäre, die "Eltern" -Funktion zu bestimmen, und wenn dieser Elternteil wäre *apply
dann werde ich anders damit umgehen, aber ich weiß nicht, ob das richtige Ansatz ist.
EDIT In Antwort auf G. Grothen
Ok, also habe ich neu geschrieben my.func1
zu
my.func1 <- function(dframe.val, dframe.name, ...){
value <- dframe.val
name <- dframe.name
name
}
Beispiel davon für jede data.frame aus der Liste Aufruf mit mapply
:
mapply(my.func1, LoDFs, names(LoDFs))
Beispiel für den direkten Aufruf:
my.func1(mtcars, as.character(substitute(mtcars)))
Es ist ein weiterer Parameter, aber scheint, dass es funktioniert (Ich bin nicht 100% sicher, ob as.character(substitute(mtcars))
richtig ist).
danken Ihnen sehr, zeigt dies für mich sehr interessante Sprache Einbauten, die ich plane, bald zu studieren. –