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

new*_*bie 2 r names nested-lists lapply

我有一个两个嵌套的循环,我想用 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
Run Code Online (Sandbox Code Playgroud)

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

For*_*ens 5

您应该注意到它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))
Run Code Online (Sandbox Code Playgroud)

这种方法产生:

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

$a$d
[1] 8


$b
$b$c
[1] 8

$b$d
[1] 9
Run Code Online (Sandbox Code Playgroud)

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

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

$f
[1] 8
Run Code Online (Sandbox Code Playgroud)