2012-05-16 25 views
12

tengo una lista en I:anexar a una lista con los nombres dinámicos, R

a <- list(n1 = "hi", n2 = "hello") 

me gustaría añadir a esta lista llamado pero los nombres deben ser dinámicos. Es decir, que son la creación de una cadena (por ejemplo: paste("another","name",sep="_")

He intentado hacer esto lo que no funciona:?

c(a, parse(text="paste(\"another\",\"name\",sep=\"_\")=\"hola\"") 

¿Cuál es la forma correcta de hacer esto El objetivo final es sólo para anexar a esta lista y elegir mis nombres dinámicamente.

Respuesta

19

Se podía utilizar la indexación con soportes dobles. Cualquiera de los métodos siguientes debería funcionar.

a <- list(n1 = "hi", n2 = "hello") 
val <- "another name" 
a[[val]] <- "hola" 
a 
#$n1 
#[1] "hi" 
# 
#$n2 
#[1] "hello" 
# 
#$`another name` 
#[1] "hola" 

a[[paste("blah", "ok", sep = "_")]] <- "hey" 
a 
#$n1 
#[1] "hi" 
# 
#$n2 
#[1] "hello" 
# 
#$`another name` 
#[1] "hola" 
# 
#$blah_ok 
#[1] "hey" 
+0

gracias, muy breve y al punto solución – Alex

9

Puede utilizar setNames para establecer los nombres sobre la marcha:

a <- list(n1 = "hi", n2 = "hello") 
c(a,setNames(list("hola"),paste("another","name",sep="_"))) 

Resultado:

$n1 
[1] "hi" 

$n2 
[1] "hello" 

$another_name 
[1] "hola" 
+0

gracias, esto es muy bueno. es bueno saber sobre setNames. – Alex

Cuestiones relacionadas