R在列表中的列表上运行

时间:2011-10-04 19:34:05

标签: r

在R中,我可以通过alist<-alist +1为列表的每个元素添加1。但是,如果我有类似alist<-list(list(1,2,3),list(2,3,4))的内容,该怎么办?有没有办法在不使用循环的情况下为子列表的每个元素添加1?

2 个答案:

答案 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