Ответ 1
foo <- function(x) deparse(substitute(x))
Супер быстрый вопрос...
Как вы берете какой-то конкретный аргумент функции (определяемый пользователем) и применяете его как строку символов?
Если для простого примера
foo <- function(x) { ... }
Я хочу просто вернуть имя объекта x. Таким образом,
foo(testing123)
возвращает "testing123"
(и тестирование123 может быть просто случайным числовым вектором)
Извиняется, если этот вопрос задан раньше - обыскал, но не смог его найти! Спасибо!!
foo <- function(x) deparse(substitute(x))
Мета-ответ: если вы знаете, что R что-то делает, и вы хотите это сделать, проверьте источник. Например, вы могли заметить, что plot(foo)
использует "foo" в ylab
, поэтому сюжет может это сделать. Как? Начните с кода:
> plot
function (x, y, ...)
{
if (is.function(x) && is.null(attr(x, "class"))) {
if (missing(y))
y <- NULL
hasylab <- function(...) !all(is.na(pmatch(names(list(...)),
"ylab")))
if (hasylab(...))
plot.function(x, y, ...)
else plot.function(x, y, ylab = paste(deparse(substitute(x)),
"(x)"), ...)
}
else UseMethod("plot")
}
И там есть волшебство deparse(substitute(x))
.
Упс, видимо, я не искал достаточно трудно...
foo <- function(x) {return(as.character(substitute(x)))}
Хорошо, что легко...