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
谢谢你的帮助!
答案 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