是否可以在R中一步复制和修改列表?

时间:2015-12-14 12:46:36

标签: r list

我发现自己做了很多这样的事情:

my_list <- list(a = list(b = "something"), c = 3, d = "a lot of other options") 

my_list_2 <- my_list
my_list_2$a$b <- "something_else"
my_list_2$c <- 5

我想知道是否有这方面的简写。类似的东西:

my_list_2 <- xxxxx(my_list, list(a = list(b = "something_else"), c = 5))

更新:我的预期输出是:

my_list # unchanged
my_list_2 # list(a = list(b = "something_else"), c = 5, d = "a lot of other options") 

2 个答案:

答案 0 :(得分:4)

modifyList正是问题显示的xxxx格式:

new_list <- modifyList(my_list, list(a = list(b = "something_else"), c = 5))

答案 1 :(得分:3)

一种选择是使用?within

within(my_list, {a$b = "something_else"; c = 5})
#$a
#$a$b
#[1] "something_else"
#
#
#$c
#[1] 5
#
#$d
#[1] "a lot of other options"

当然,通过将结果分配给新对象,可以在同一步骤中进行复制,例如

my_list2 <- within(my_list, {a$b = "something_else"; c = 5})