r - 使用lapply时如何命名列表下的列表?

标签 r nested-lists lapply names

我有两个嵌套循环,我想用 lapply 而不是 for 循环来完成。我编写了以下简单示例:

a<-as.list(c(1,2))  
b<-as.list(c(6,7))  
results<-lapply(a, function(x) lapply(b, function(y) x+y))

> results  
[[1]]  
[[1]][[1]]  
[1] 7  

[[1]][[2]]  
[1] 8  


[[2]]  
[[2]][[1]]  
[1] 8

[[2]][[2]]  
[1] 9

如何为这个列表分配名称,我可以使用 names(result)<-a 为第一级分配名称,但我不知道如何为第二级分配名称。并且命名应该在循环中完成,因为在我的主程序中 b 的长度可能会改变。 如果有人能给我一些提示,我将不胜感激。

最佳答案

你应该注意到 lapply() 本身只是一个构造良好的 for() 循环的包装器,所以你没有获得任何效率,可能只是提高了可读性.除此之外,最简单的方法是将名称添加到进入嵌套 lapply() 调用的列表中:

a<-as.list(c(1,2))
b<-as.list(c(6,7)) 
names(a) <- c("a","b")
names(b) <- c("c", "d")
results<-lapply(a, function(x) lapply(b, function(y) x+y))

这种方法产生:

> results
$a
$a$c
[1] 7

$a$d
[1] 8


$b
$b$c
[1] 8

$b$d
[1] 9

您当然可以像这样重命名嵌套组件:

> names(results$a) <- c("e","f")
> results$a
$e
[1] 7

$f
[1] 8

关于r - 使用lapply时如何命名列表下的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31349331/

相关文章:

只有在我连接到我的工作 VPN 后,R Studio 才会非常慢?

r - 如何生成L长度的二进制码置换矩阵

r - 提取 data.table 中组内所有可能的对

python - 使用嵌套列表迭代数据库

使用 data.table 在 R 中重建索引?

r - 使用 group by 对 data.table 列进行子集化

r - 如何使用字符串按列对数据框进行子集化

r - 如何在不使用 %>% 的情况下以常规范式编写以下代码?

Javascript:操作列表的列表

python - 在较大列表中处理可变大小的子列表