【问题标题】:How to names lists under list when using lapply?使用 lapply 时如何在列表下命名列表?
【发布时间】:2015-09-29 16:59:56
【问题描述】:

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

如何为这个列表分配名称,我可以使用名称(结果)

【问题讨论】:

    标签: r nested-lists lapply names


    【解决方案1】:

    您应该注意,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
    

    【讨论】:

    • 感谢您的评论。我想把 names(b)
    • 您能否解释一下原因,或者改进您上面提供的示例,以了解您真正希望看到的结果?
    • @newbie 也许你应该考虑在创建时命名b,否则如果没有更好的工作示例,很难看出你想改进什么
    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    相关资源
    最近更新 更多