Вычислительный на языке в R - PullRequest
8 голосов
/ 08 марта 2011

Если я хочу напечатать символ, обозначающий объект в R, я могу использовать quote ():

> X <- list()
> print(quote(X))
X
>

Однако, если у меня есть функция

h <- function(Y){
     quote(Y)
}

тогда

> h(X)
Y
>

Возможно ли в R написать такую ​​функцию, что

> h(X)
X

Ответы [ 3 ]

12 голосов
/ 08 марта 2011
> f = function(x) print(deparse(substitute(x)))
> f(asd)
[1] "asd"
> 

Почему? Как вы узнали, quote() говорит R не оценивать блок кода (что он делает с Y). substitute() ведет себя по-разному; хороший пример на ?substitute.

6 голосов
/ 08 марта 2011
h <- function(x) match.call()[['x']]

h(X)
X
0 голосов
/ 03 марта 2016

substitute также работает без дополнительных звонков:

h <- function(x) substitute(x)
h(X)
X
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...