处理嵌套在R中的嵌套列表中的处理向量

时间:2016-06-04 17:20:58

标签: r list vector

我有list listvector s,如下所示:

myList = list(id1 = list(a=6:10,b=1:5),
              id2 = list(a=3:8,b = 4:9))

我想处理第二个vector名为' b'在每个列表中包含任意function(例如meansum等),并将结果附加到每个嵌套vector中的第三个名为list的内容中实现类似的目标:

myList2 = list(id1 = list(a=6:10,b=1:5,c = mean(1:5)),
          id2 = list(a=3:8,b = 4:9,c = mean(4:9)))

因此,我的问题有两个部分。首先,如何在每个嵌套vector中仅处理第二个名为list的?其次,如何将结果附加到每个嵌套的list

我知道我可以写一个总是索引for的{​​{1}}循环,但我正在寻找一个矢量化解决方案。我尝试使用各种组合myList[[i]][[2]] - 家人与匿名apply首先测试function的名称,例如:

vector

但结果并没有多大意义。

其他信息:我使用嵌套rapply(myList, function(x) ifelse(names(x) == "b", print("yes"), #process vector print("no")), #move on to next x how = "list" ) 而不是list,因为我对每个ID都没有相同数量的观察结果,但我愿意接受替代可能绕过这些问题并适应不同数量观察的方法。

1 个答案:

答案 0 :(得分:3)

这应该这样做

lapply(myList, function(x) {
  x$c <- mean(x$b)
  return(x)
})