В простой функции с помощью ...
предоставить список аргументов, возможно для этой функции, чтобы найти имен из объектов, передаваемых из вызова Окружающая среда? Если да, то как?R: получить имена аргументов, переданных в `...`
Это возникает в контексте вопроса, printing matrices and vectors side by side, но, вероятно, является более общим.
В этом контексте аргументы ...
также могут содержать символьные строки, для которых имена не требуются. Вот мой MWE, где я пробовал использовать deparse(substitute())
, но безрезультатно.
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
}
Тест:
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]]"
>
Мой желаемый результат для этого будет характер вектор длины 7:
[1] "A" " " "x" " " "y" " " "b"
Удивительно здесь, что результаты являются все X[[i]]
, когда нет X
упомянутый везде.
После @ ответ Роланда, это, кажется, делать то, что я хочу:
test_names2 <- function(...) {
argnames <- sys.call()
unlist(lapply(argnames[-1], as.character))
}
> test_names2(A, " * ", x, " - ", y, " = ", b)
[1] "A" " * " "x" " - " "y" " = " "b"
Вы получаете их от лапы. Он не сохраняет имена списков. – Roland
Отредактировано для отображения желаемого результата – user101089