附加到具有动态名称的列表,R

Ale*_*lex 23 r list append names

我在R中有一个列表:

a <- list(n1 = "hi", n2 = "hello")
Run Code Online (Sandbox Code Playgroud)

我想附加到这个命名列表,但名称必须是动态的.也就是说,它们是从字符串创建的(例如:paste("another","name",sep="_")

我尝试这样做不起作用:

c(a, parse(text="paste(\"another\",\"name\",sep=\"_\")=\"hola\"")
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?最终目标只是附加到此列表并动态选择我的名字.

Das*_*son 30

您可以使用带双括号的索引.以下任一方法都应该有效.

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"
Run Code Online (Sandbox Code Playgroud)


Ben*_*ker 12

您可以使用setNames即时设置名称:

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

结果:

$n1
[1] "hi"

$n2
[1] "hello"

$another_name
[1] "hola"
Run Code Online (Sandbox Code Playgroud)