在列表中追加新元素,同时从变量设置其名称

age*_*nis 10 r rename list append

我有一个现有的列表:

mylist = list("player1"="Mike", "player2"="John")
Run Code Online (Sandbox Code Playgroud)

我想附加一个新元素“Sam”,其名称属性如“player17”,只不过该名称存储在变量中:

new_name="player17"
Run Code Online (Sandbox Code Playgroud)

所以我尝试不同的语法但没有成功:

c(mylist, new_name="Sam")
with(mylist, assign(new_name, "Sam"))
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以一步完成此操作(我知道我也可以使用该函数分两步更改每个元素的名称names)。

编辑:在我的真实数据中,列表的元素可以是 data.frames。

Ron*_*hah 8

要在键中附加值,我们可以

mylist[[key]] = c(mylist[[key]],'Sam')
Run Code Online (Sandbox Code Playgroud)

例如,

mylist = list("player1"="Mike", "player2"="John")
mylist[["player1"]] = c(mylist[["player1"]],'Sam')

mylist
#$player1
#[1] "Mike" "Sam" 

#$player2
#[1] "John"
Run Code Online (Sandbox Code Playgroud)

如果密钥尚未使用,这也将起作用

new_name="player17"
mylist[[new_name]] = c(mylist[[new_name]],'Sam')

#$player1
#[1] "Mike" "Sam" 

#$player2
#[1] "John"

#$player17
#[1] "Sam"
Run Code Online (Sandbox Code Playgroud)

编辑:根据更新,如果我们的列表中有数据帧,我们可以使用rbind而不是c

mylist=list(a = mtcars, b = mtcars*10) 
mylist[["c"]] = rbind(mylist[["c"]], mtcars/10)
Run Code Online (Sandbox Code Playgroud)

这也适用于上面的例子。