2012-05-16 5 views
12

Ich habe eine Liste in R:Anfügen auf eine Liste mit dynamischen Namen, R

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

Ich möchte auf diese genannt Liste anhängen aber die Namen müssen dynamisch sein. Das heißt, sie sind aus einem String (zum Beispiel erstellen: paste("another","name",sep="_")

Ich habe versucht, dies zu tun, die nicht funktioniert:?

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

Was ist der richtige Weg, dies zu tun Das Endziel ist nur anfügen dynamisch zu dieser Liste und meine Namen wählen.

Antwort

19

Sie nur die Indizierung mit doppelten eckigen Klammern verwenden könnte. Eine der folgenden Methoden funktionieren soll.

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

danke, sehr kurz und auf den Punkt Lösung – Alex

9

Sie setNames verwenden können, die Namen on the fly zu setzen:

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

Ergebnis:

$n1 
[1] "hi" 

$n2 
[1] "hello" 

$another_name 
[1] "hola" 
+0

Ihnen danken, das ist großartig. Gut zu wissen über setNames. – Alex

Verwandte Themen