2012-05-16 17 views
12

Ho una lista in R:aggiungendo in un elenco con i nomi dinamici, R

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

Vorrei aggiungere a questa lista chiamato ma i nomi devono essere dinamici. Cioè, essi sono di creare da una stringa (ad esempio: paste("another","name",sep="_")

Ho provato a fare questo che non funziona:?

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

Qual è il modo corretto di fare questo L'obiettivo finale è solo di aggiungere a questo elenco e scegliere i miei nomi in modo dinamico.

risposta

19

si potrebbe utilizzare l'indicizzazione con staffe doppie. in entrambi dei seguenti metodi dovrebbe funzionare.

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

grazie, molto breve e alla soluzione punto – Alex

9

È possibile utilizzare setNames per impostare i nomi al volo:

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

Risultato:

$n1 
[1] "hi" 

$n2 
[1] "hello" 

$another_name 
[1] "hola" 
+0

grazie, questo è grande. bene sapere su setNames. – Alex

Problemi correlati