在R中用另一个替换列表的值

时间:2016-02-09 04:39:44

标签: r list

a,b和c是列表。

a<-list(c(6,5,7),c(1,2),c(1,3,4))
b<-list(c(1,2,3),c(4,5),c(6,7,8))
c<-list(1,2,2)

我想在“c”处将“a”替换为“b”以生成新列表。

预期结果如下:

[[1]]
[1] 1 5 7

[[2]]
[1] 1 5

[[3]]
[1] 1 7 4

谢谢你的帮助!

2 个答案:

答案 0 :(得分:8)

听起来你正在寻找Map同时迭代所有列表。

Map(function(a,b,c) {a[c]<-b[c]; a},a,b,c)
# [[1]]
# [1] 1 5 7
#
# [[2]]
# [1] 1 5
#
# [[3]]
# [1] 1 7 4

答案 1 :(得分:0)

对于发现找到Map令人生畏的语法的R新手:

for(i in seq(c)){
  a[[i]][unlist(c[i])] <- b[[i]][unlist(c[i])]
}
a

# [[1]]
# [1] 1 5 7
#
# [[2]]
# [1] 1 5
#
# [[3]]
# [1] 1 7 4