29

私はRにリストを持っています:

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

この名前付きリストに追加したいのですが、名前は動的でなければなりません。つまり、文字列から作成されます(例:paste("another","name",sep="_")

私はこれをやってみましたが、うまくいきません:

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

これを行う正しい方法は何ですか?最終的な目標は、このリストに追加して、私の名前を動的に選択することです。

4

2 に答える 2

35

二重角かっこでインデックスを使用することもできます。次のいずれかの方法が機能するはずです。

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"
于 2012-05-16T04:35:19.030 に答える
14

setNamesその場で名前を設定するために使用できます。

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

結果:

$n1
[1] "hi"

$n2
[1] "hello"

$another_name
[1] "hola"
于 2012-05-16T04:39:25.290 に答える