[英]Process vector nested within a nested list in R
我有一个vector
list
的list
,如下所示:
myList = list(id1 = list(a=6:10,b=1:5),
id2 = list(a=3:8,b = 4:9))
我想在每个列表中使用任意function
(例如, mean
, sum
等)处理名为“b”的第二个vector
,并将结果附加到每个嵌套list
的第三个命名vector
,以实现类似于:
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)))
因此,我的问题有两个部分。 首先,如何在每个嵌套list
中仅处理第二个命名vector
? 其次,如何将结果附加到每个嵌套list
?
我知道我可以编写一个始终索引myList[[i]][[2]]
的for
循环,但我正在寻找一个矢量化解决方案。 我尝试使用各种组合apply
-family与首先测试vector
名称的匿名function
,例如:
rapply(myList, function(x) ifelse(names(x) == "b",
print("yes"), #process vector
print("no")), #move on to next x
how = "list"
)
但结果没有多大意义。
附加信息:我使用嵌套list
而不是data.frame
因为我对每个id没有相同数量的观察,但我愿意接受可能绕过这些问题并适应不同数量观察的替代方法。
这应该做到这一点
lapply(myList, function(x) {
x$c <- mean(x$b)
return(x)
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.