我有list
list
个vector
s,如下所示:
myList = list(id1 = list(a=6:10,b=1:5),
id2 = list(a=3:8,b = 4:9))
我想处理第二个vector
名为' b'在每个列表中包含任意function
(例如mean
,sum
等),并将结果附加到每个嵌套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都没有相同数量的观察结果,但我愿意接受替代可能绕过这些问题并适应不同数量观察的方法。
答案 0 :(得分:3)
这应该这样做
lapply(myList, function(x) {
x$c <- mean(x$b)
return(x)
})