2011-03-07 8 views
8

Si Quiero imprimir el símbolo que denota un objeto en RI puede utilizar comillas():Computing en la Lengua en I

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

Sin embargo, si tengo la función

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

continuación

> h(X) 
Y 
> 

¿es posible en I escribir una función tal que

> h(X) 
X 

?

Respuesta

12
> f = function(x) print(deparse(substitute(x))) 
> f(asd) 
[1] "asd" 
> 

¿Por qué? Como ha descubierto, quote() le dice a R que no evalúe un bloque de código (que lo hace con Y). substitute() se comporta de manera diferente; hay un buen ejemplo en ?substitute.

6
h <- function(x) match.call()[['x']] 

h(X) 
X 
0

substitute funciona también sin las llamadas adicionales:

h <- function(x) substitute(x) 
h(X) 
X