Привести аргумент функции в виде строки символов? - PullRequest
17 голосов
/ 05 ноября 2010

Супер быстрый вопрос ...

Как вы берете аргумент определенной функции (определяемый пользователем) и приводите его как символьную строку?

Если для простого примера,

foo <- function(x) { ... }

Я хочу просто вернуть имя объекта x. Таким образом,

foo(testing123)

возвращает "testing123" (а testing123 может быть просто произвольным числовым вектором)

Извините, если этот вопрос задавался ранее - искал, но не смог его найти! Благодаря !! * * 1014

Ответы [ 3 ]

32 голосов
/ 05 ноября 2010
foo <- function(x) deparse(substitute(x))
17 голосов
/ 05 ноября 2010

Мета-ответ: если вы знаете, что 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)).

2 голосов
/ 05 ноября 2010

Упс, по-видимому, я не достаточно усердно искал ...

foo <- function(x) {return(as.character(substitute(x)))}

Ну, это просто ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...