在R中,我可以通过执行操作为列表的每个元素添加1 alist<-alist +1.但是,如果我有类似的东西呢alist<-list(list(1,2,3),list(2,3,4))?有没有办法在不使用循环的情况下为子列表的每个元素添加1?
在问题列表中写了但是示例显示了一个向量.我认为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)
我昨天才知道这件事;在类似情况下,它可能对其他人有用;[[允许递归索引到列表中,就像这样。
> alist[[c(1,2)]]
[1] 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
684 次 |
| 最近记录: |