【问题标题】:Selecting unnamed columns in R在 R 中选择未命名的列
【发布时间】:2021-12-16 12:36:08
【问题描述】:

读入一些数据后,我不知何故有几列都被命名为“”。我想从我的数据框中删除这些列。例如,

x <- tribble(
~ a, ~ b, ~"", ~"",
  1, 2, NA, NA,
  3, 4, NA, NA
)
select(x, -"")

但是,这会引发错误:名称不能为空。我也试过了:

select(x, -where(~ .x == ""))

但它说 where() 必须与返回 TRUE 或 FALSE 的函数一起使用。我真的不想根据位置(即 3、4)进行选择,但我找不到解决方案。

【问题讨论】:

    标签: r dplyr tibble


    【解决方案1】:

    另一种解决方案:

    select_if(x, ~ all(. != ""))
    

    还是:

    select_if(x, ~ !is.null(.))
    

    【讨论】:

      【解决方案2】:

      一个选项也是

      library(dplyr)
      x %>% 
         select(-matches('^$'))
      # A tibble: 2 × 2
            a     b
        <dbl> <dbl>
      1     1     2
      2     3     4
      

      【讨论】:

        【解决方案3】:

        如何按列名中的字符数进行子集?

        x <- tribble(
          ~ a, ~ b, ~"", ~"",
          1, 2, NA, NA,
          3, 4, NA, NA
        )
        x[,nchar(names(x))>0]
        
        # A tibble: 2 x 2
              a     b
          <dbl> <dbl>
        1     1     2
        2     3     4
        

        【讨论】:

        • 还有x[nzchar(names(x))]
        • @Henrik 酷!不知道那个快捷方式。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-03
        • 2019-08-28
        • 2011-12-03
        • 1970-01-01
        • 1970-01-01
        • 2018-08-11
        • 1970-01-01
        相关资源
        最近更新 更多