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
感谢您的帮助!
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
对于 R 的新手来说,发现 Map
的语法令人望而生畏:
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
Map(\
[<-`, a, c, Map('[[', b, c))` - rawr