R 使用新元素追加列表,同时通过变量设置其名称

R 使用新元素追加列表,同时通过变量设置其名称,r,list,append,rename,R,List,Append,Rename,我现有一份清单: mylist = list("player1"="Mike", "player2"="John") 我想附加一个新元素“Sam”,其名称属性类似于“player17”,只是名称存储在一个变量中: new_name="player17" 因此,我尝试了不同的语法,但没有成功: c(mylist, new_name="Sam") with(mylist, assign(new_name, "Sam")) 是否有一种方法可以在一个步骤中完成此操作(我知道我也可以在两个步骤中使用

我现有一份清单:

mylist = list("player1"="Mike", "player2"="John")
我想附加一个新元素“Sam”,其名称属性类似于“player17”,只是名称存储在一个变量中:

new_name="player17"
因此,我尝试了不同的语法,但没有成功:

c(mylist, new_name="Sam")
with(mylist, assign(new_name, "Sam"))
是否有一种方法可以在一个步骤中完成此操作(我知道我也可以在两个步骤中使用函数
names
)更改每个元素的名称)


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

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

mylist[[key]] = c(mylist[[key]],'Sam')
比如说,

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

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

#$player2
#[1] "John"
如果还没有使用密钥,这也会起作用

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

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

#$player2
#[1] "John"

#$player17
#[1] "Sam"

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

mylist=list(a = mtcars, b = mtcars*10) 
mylist[["c"]] = rbind(mylist[["c"]], mtcars/10)

这也适用于上面的例子

这个
mylist[[new_name]]=“Sam”
?@RonakShah非常感谢,这确实有效!但我在想,如果这个名字已经存在于列表中,它将取代它,而不是“附加”它!我错了吗?我想确定它是否附加了它谢谢我在我的真实数据上尝试了它,因为我的一个列表中有一个元素是data.frames,并且它的行为很奇怪(数据帧的添加方式与其他数据帧不同)@agenis所以你需要将它作为行添加到数据帧中吗。其中的列是什么?它们对应的值是什么?它通常不添加新的data.frame,而是将其转换为列的(子)列表。用mtcars试试吧<代码>mylist=列表(mtcars,mtcars*10);mylist[[new_name]]=c(mylist[[new_name]],mtcars/10)@agenis用于数据帧,而不是
c
我们使用
rbind
mylist=list(a=mtcars,b=mtcars*10)mylist[[“c”]]=rbind(mylist[[“c”]],mtcars/10)
它也适用于第一个示例。唯一的区别是它将自身更改为数据帧。