gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:58:40 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com