我将数据存储在多级嵌套列表中。此列表可能如下所示
my.list = list()
my.list[[1]] = list("naive" = list("a"=c(1,1)) )
my.list[[2]] = list("naive" = list("b"=c(2,1)) )
my.list[[3]] = list("naive" = list("c"=c(3,1)) )
my.list[[4]] = list("naive" = list("d"=c(4,1)) )
my.list[[5]] = list("naive" = list("e"=c(5,1)) )
现在我想对存储的值进行一些操作,比如选择二维向量的第一个元素并将它们组合到另一个向量中。当然,这可以像下面这样做
foo = c(my.list[[1]][["naive"]][[1]][1],
my.list[[2]][["naive"]][[1]][1],
my.list[[3]][["naive"]][[1]][1],
my.list[[4]][["naive"]][[1]][1],
my.list[[5]][["naive"]][[1]][1])
但如果我有超过5个一级的子列表,这真的很尴尬。我对K
my.list[[K]][["naive"]][[1]][1]
K=1:5
中的mapply
循环有同样的感觉。
由于Reduce
第二级子列表的存在,使用整齐的sapply
,"naive"
,foo = c(15,5)
提供的类似问题的建议无法直接应用。
有人可以帮助我们提供一个聪明且有指导意义的解决方案,根据这种多级列表结构存储的值可以连接,相互添加还是两者兼而有之?在上面的示例中,最终期望的结果可以是为所有向量添加相应的分量,并将结果存储在新的2-d向量中,在这种情况下将是img {
width:100px;
height:100px;
background: url(http://goo.gl/vyAs27) no-repeat scroll 0 0;
}
。你的回答对我很有帮助。
答案 0 :(得分:2)
是的,在这种情况下,sapply
肯定能帮到你:
sapply(my.list, function(x) x[["naive"]][[1]][1])
如果需要,您可以在此处或sapply
/ lapply
对naive
向量的索引进行概括。