将列表中的元素添加到多个其他嵌套列表中

时间:2017-08-03 06:15:21

标签: r list

我有一份清单清单,如下:

my_list = list(list(a=1,b=2),list(a=1,b=2),list(a=1,b=2))

我有一个矢量b_new,其长度与length(my_list)完全相同:

b_new = c(3,4,5)

我想用b中的值顺序覆盖my_list的b元素,因此预期输出为:

my_list = list(list(a=1,b=3),list(a=1,b=4),list(a=1,b=5))

我显然可以在for循环中执行此操作:

for(i in 1:length(b_new))
{
  my_list[[i]]$b=b_new[i]
}

但我想知道是否有一种没有for循环的方法,例如使用mapply?

1 个答案:

答案 0 :(得分:2)

它仍然是一个循环,但以下将会这样做:

Map(`[<-`, my_list, "b", b_new)
# or more pleasantly named:
Map(replace, my_list, "b", b_new)

str(Map(`[<-`, my_list, "b", b_new))
#List of 3
# $ :List of 2
#  ..$ a: num 1
#  ..$ b: num 3
# $ :List of 2
#  ..$ a: num 1
#  ..$ b: num 4
# $ :List of 2
#  ..$ a: num 1
#  ..$ b: num 5