2010-10-19 9 views
35

preguntas similares han planteado para otros idiomas: C, sql, java, etc, pero estoy tratando de hacerlo en R.Acceso valor de la variable donde el nombre de la variable se almacena en una cadena en R

I tienen

ret_series <- c(1, 2, 3); 
x <- "ret_series"; 

¿Cómo llego (1, 2, 3) llamando a alguna función/manipulación por x, sin hacer mención directa de ret_series?

+0

Vea también: http://stackoverflow.com/questions/2948367/pass-variable-name-to-a-function-in-r –

+0

FWIW, los puntos y comas al final de cada instrucción no son necesarios. –

Respuesta

49

Has proporcionado la respuesta en tu pregunta. Pruebe get.

> get(x) 
[1] 1 2 3 
13

Para un uso sin uso, la función get funciona (como se ha mencionado anteriormente), pero no se adapta bien a proyectos más grandes. es mejor para almacenar sus datos en listas o entornos, a continuación, utilizar [[acceder a los elementos individuales:

mydata <- list(ret_series=c(1,2,3)) 
x <- 'ret_series' 

mydata[[x]] 
3

lo que está mal con cualquiera de los siguientes?

eval(as.name(x)) 

eval(as.symbol(x)) 
+0

Tenga cuidado al pegar el código de la consola. StackOverflow interpreta ">" como citando. Use el símbolo 0101010 para formatear el código. Y bienvenido en SO;) – Marek

1

Tenga en cuenta que algunos de los ejemplos anteriores no funcionarían para un data.frame.

Por ejemplo, dada

x <- data.frame(a=seq(1,5))

get("x$a") no le daría x$a.

+2

'get (" x ") $ a' funcionaría. –

Cuestiones relacionadas