如果子列表尚不存在则添加子列表元素值,否则覆盖它

时间:2014-06-23 00:54:56

标签: r list nested-lists sublist

如果我有嵌套列表

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?

中执行此操作

2 个答案:

答案 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"]] <- ...