R在列表中的列表上运行

Los*_*Lin 1 r

在R中,我可以通过执行操作为列表的每个元素添加1 alist<-alist +1.但是,如果我有类似的东西呢alist<-list(list(1,2,3),list(2,3,4))?有没有办法在不使用循环的情况下为子列表的每个元素添加1?

dar*_*zig 7

在问题列表中写了但是示例显示了一个向量.我认为OP意味着:

alist <- list(list(1, 2, 3), list(2, 3, 4))
Run Code Online (Sandbox Code Playgroud)

您可以使用递归版本而不是循环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
Run Code Online (Sandbox Code Playgroud)


Aar*_*ica 5

我昨天才知道这件事;在类似情况下,它可能对其他人有用;[[允许递归索引到列表中,就像这样。

> alist[[c(1,2)]]
[1] 2
Run Code Online (Sandbox Code Playgroud)

  • 这也是我的想法,但是:`'[[' 可以递归地应用于列表,因此如果单个索引 'i' 是长度为 'p' 的向量,则 'alist[[i]]' 等价于 ' alist[[i1]]...[[ip]]' 提供列表中除最终索引结果之外的所有内容。` (3认同)