在R中,我可以通过alist<-alist +1
为列表的每个元素添加1。但是,如果我有类似alist<-list(list(1,2,3),list(2,3,4))
的内容,该怎么办?有没有办法在不使用循环的情况下为子列表的每个元素添加1?
答案 0 :(得分:7)
在问题列表中写了但是示例显示了一个向量。我认为OP意味着:
alist <- list(list(1, 2, 3), list(2, 3, 4))
您可以使用递归版lapply
而不是循环,请参阅:?rapply
。
> rapply(alist, function(x) x+1, how = "list" )
[[1]]
[[1]][[1]]
[1] 2
[[1]][[2]]
[1] 3
[[1]][[3]]
[1] 4
[[2]]
[[2]][[1]]
[1] 3
[[2]][[2]]
[1] 4
[[2]][[3]]
[1] 5
答案 1 :(得分:4)
我昨天才知道这件事;它可能对类似情况下的其他人有用; [[
允许递归索引到列表中,如下所示。
> alist[[c(1,2)]]
[1] 2