2012-05-03 7 views
13

i escribir este código en Icómo obtener valor cuando un nombre de variable se pasa como una cadena

paste("a","b","c") 

que devuelve el valor "abc"

variable abc tiene un valor de 5 (digamos) de cómo hacer obtengo "abc" para darme el valor 5 ¿hay alguna función como as.value(paste("a","b","c")) que me dé la respuesta 5? Estoy haciendo que mi duda suene simple y esto es exactamente lo que quiero. Entonces por favor ayudame Gracias de antemano

+3

[FAQ 7.21] (http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-turn-a-string-into-a-variable_003f) –

Respuesta

27

paste("a","b","c") da "a b c" no "abc"

De todos modos, creo que busca get():

> abc <- 5 
> get("abc") 
[1] 5 
+0

Entonces ¿cómo haces el reverso? Como algo (5) "abc" – Bharath

6

Una adición a la respuesta de Sacha. Si desea asignar un valor a un "abc" objeto utilizando paste():

assign(paste("a", "b", "c", sep = ""), 5) 
+6

También podría usar el nuevo 'paste0 (...)' que es la abreviatura de 'paste (..., sep =" ")' –

6

Ésta es sin duda una de las preguntas más frecuentes sobre el lenguaje R, junto con su hermano gemelo malvado "¿Cómo se activa x='myfunc' en una función ejecutable? " En resumen, get, parse, eval, expression son buenas cosas para aprender. El más útil (en mi humilde opinión) y el menos conocido es do.call, que se encarga de gran parte del trabajo de conversión de cadena a objeto para usted.

+0

Puede ser que, pero estos las cosas no son aparentes cuando empiezas a usar R. También es difícil leer las preguntas frecuentes, si no estás acostumbrado al idioma que usan allí (al menos para hablantes no nativos) – Mikko

+0

@ Largh, eso es lo que "The R-Inferno" "es para ~ _ * –

Cuestiones relacionadas