【问题标题】:Subsetting from a list of dataframes in RR中数据框列表的子集
【发布时间】:2021-12-16 01:48:05
【问题描述】:

我有一个数据框列表:

df1 <- data.frame(c(1:5), c(6:10))
df2 <- data.frame(c(1:7))
df3 <- data.frame(c(1:5), c("a", "b", "c", "d", "e"))
my_list <- list(df1, df2, df3)

我想从 my_list 中提取只有 2 列(df1 和 df3)的数据框,并将它们放入一个新列表中。

【问题讨论】:

    标签: r list dataframe tidyverse


    【解决方案1】:

    也许你可以试试lengths

    > my_list[lengths(my_list) == 2]
    [[1]]
      c.1.5. c.6.10.
    1      1       6
    2      2       7
    3      3       8
    4      4       9
    5      5      10
    
    [[2]]
      c.1.5. c..a....b....c....d....e..
    1      1                          a
    2      2                          b
    3      3                          c
    4      4                          d
    5      5                          e
    

    【讨论】:

      【解决方案2】:

      也可以使用lapply 和逻辑条件进行子集化(sapply 也可以):

      my_list[lapply(my_list, ncol) == 2]
      
      [[1]]
        c.1.5. c.6.10.
      1      1       6
      2      2       7
      3      3       8
      4      4       9
      5      5      10
      
      [[2]]
        c.1.5. c..a....b....c....d....e..
      1      1                          a
      2      2                          b
      3      3                          c
      4      4                          d
      5      5                          e
      

      【讨论】:

        【解决方案3】:

        我们可以使用 purrr 包中的 keep 条件:

        library(purrr)
        my_list %>% keep(~ ncol(.x) == 2)
        
        [[1]]
          c.1.5. c.6.10.
        1      1       6
        2      2       7
        3      3       8
        4      4       9
        5      5      10
        
        [[2]]
          c.1.5. c..a....b....c....d....e..
        1      1                          a
        2      2                          b
        3      3                          c
        4      4                          d
        5      5                          e
        

        【讨论】:

          猜你喜欢
          • 2012-11-18
          • 1970-01-01
          • 2020-11-21
          • 1970-01-01
          • 2018-11-18
          • 2016-11-04
          • 1970-01-01
          • 1970-01-01
          • 2018-05-18
          相关资源
          最近更新 更多