【问题标题】:subsetting in nested list r嵌套列表 r 中的子集
【发布时间】:2018-09-21 22:19:47
【问题描述】:

我有以下列表:

mylist<-list(c("25","0"),c("50","1"),c("100","2"))

我想立即提取列表中每个元素的第一个元素。那是

c(mylist[[1]][1],mylist[[2]][1],mylist[[3]][1])

我尝试了以下但没有成功:

mylist[[]][1]; mylist[[.]][1]; mylist[1:3][1]

感谢任何有效地做到这一点的建议

【问题讨论】:

    标签: r list nested subset


    【解决方案1】:

    另一个lapply解决方案:

    lapply(mylist,"[", 1)
    
    [[1]]
    [1] "25"
    
    [[2]]
    [1] "50"
    
    [[3]]
    [1] "100"
    

    有了purrr,我们也可以这样做:

    purrr::map(mylist, ~ .x[1])
    
    [[1]]
    [1] "25"
    
    [[2]]
    [1] "50"
    
    [[3]]
    [1] "100"
    

    不过,lapply 应该更快。

    【讨论】:

      【解决方案2】:

      如果您希望它们作为原子向量,您可以使用:

      mylist <- list(c("25","0"),c("50","1"),c("100","2"))
      
      sapply(mylist, function(v) v[1])
      ## [1] "25"  "50"  "100"
      

      或者将它们作为一个列表:

      lapply(mylist, function(v) v[1])
      ## [[1]]
      ## [1] "25"
      ## [[2]]
      ## [1] "50"
      ## [[3]]
      ## [1] "100"
      

      【讨论】:

      • 对于列表,lapply 而不是 sapply
      猜你喜欢
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      相关资源
      最近更新 更多