我将数据存储在多级嵌套列表中。这个列表可能看起来像这样
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 in my.list[[K]][["naive"]][[1]][1],K=1:5上循环也有同样的感觉.
对于使用cannot mapply、Reduce、sapply的类似问题,由于存在"naive"二级子列表,不能直接应用这些建议。
有人能帮我们找到一个聪明且有教育意义的解决方案吗?在这个解决方案中,根据这种多级列表结构存储的值可以相互连接、相互添加,或者两者兼而有之。在上面的例子中,最终想要的结果可以是为所有向量添加各自的组件,并将结果存储在一个新的二维向量中,在本例中是foo = c(15,5)。你的回答对我有很大帮助。
发布于 2015-10-02 14:47:12
是的,在这种情况下,sapply一定会帮你的:
sapply(my.list, function(x) x[["naive"]][[1]][1])如果需要的话,您可以从这里对sapply/lapply对naive向量的索引进行概括。
https://stackoverflow.com/questions/32909680
复制相似问题