我有两个嵌套循环,我想用 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/