如果我有嵌套列表
m=list(list(a=1,b=2,c=3),list(a=1,b=2,c=3))
我在向量中有元素d
的值,如果子列表m
尚不存在,我怎么能将这些值添加到嵌套列表d
,否则覆盖子列表d
的值?
lapply(1:length(m),function(i) c(m[[i]],d=d[[i]]))
添加了向量d=c(1,3)
的值,但问题是,如果我这样做两次,它会继续添加我不想要的子列表d
- 我宁愿他们喜欢它们被覆盖。 (我想将第一个向量元素添加/替换到第一个子列表,第二个到第二个子列表等)
我如何在R?
中执行此操作答案 0 :(得分:3)
在这种情况下,modifyList
函数可能很有用。跑吧
lapply(m, modifyList, list(d=1:3))
这将用您指定的列表中的值替换M中的子列表的值。
如果您有一个d
值的向量,并且只想在每个列表中添加一个,那么
Map(modifyList, m, lapply(c(1,3), function(x) list(d=x)))
可能是更好的选择。
答案 1 :(得分:0)
我认为
lapply(m,function(x) { x$d <- c(1,3); x })
应该有效(或x[["d"]] <- ...
)