In einer einfachen Funktion ...
mit einer Liste der Argumente zu liefern, ist es möglich, die Funktion der Namen finden der übergebenen Objekte aus der Aufruf Umgebung? Wenn das so ist, wie?R: bestanden Namen der Argumente erhalten in `...`
Dies ergibt sich im Zusammenhang mit der Frage printing matrices and vectors side by side, ist aber wahrscheinlich allgemeiner.
In diesem Zusammenhang können die Argumente ...
auch Zeichenfolgen enthalten, für die keine Namen erforderlich sind. Hier ist mein MWE, wo ich es mit deparse(substitute())
versucht habe, aber ohne Erfolg.
test_names <- function(...) {
# get arguments
args <- list(...)
chars <- sapply(args, is.character)
names <- sapply(args, function(x) if(is.character(x)) " " else deparse(substitute(x)))
names
}
Test:
A = matrix(c(0.5, 1, 3, 0.75, 2.8, 4), nrow = 2)
x = c(0.5, 3.7, 2.3)
y = c(0.7, -1.2)
b = A %*% x - y
> test_names(A, " * ", x, " - ", y, " = ", b)
[1] "X[[i]]" " " "X[[i]]" " " "X[[i]]" " " "X[[i]]"
>
Meine gewünschte Ausgabe hierfür wäre der Charakter Vektor der Länge sein 7:
[1] "A" " " "x" " " "y" " " "b"
Es ist überraschend ist hier, dass die Ergebnisse sind alle X[[i]]
, wenn es ist nirgends X
erwähnt.
@ Antwort des Roland Folgen, scheint dies zu tun, was ich will:
test_names2 <- function(...) {
argnames <- sys.call()
unlist(lapply(argnames[-1], as.character))
}
> test_names2(A, " * ", x, " - ", y, " = ", b)
[1] "A" " * " "x" " - " "y" " = " "b"
Sie erhalten diese von lapply. Es behält Listennamen nicht bei. – Roland
Bearbeitet, um die gewünschte Ausgabe anzuzeigen – user101089