【问题标题】:Remove column only if it exists仅在存在时删除列
【发布时间】:2021-09-20 01:12:30
【问题描述】:

我只想从数据框中删除一列。

例子:

a <- 1:5
x <- tibble(a, b = a * 2, c = 1)
x %>% select(-'a')
x %>% select(-'d') # Throws an error

我想要一种方法来删除列 ad 仅当它们存在时,所以 a 被删除并且尝试删除 d 永远不会发生。我尝试修改this 解决我的问题,但我无法让它工作。

【问题讨论】:

  • 使用any_of():x %&gt;% select(-any_of(c('a', 'd')))

标签: r dplyr


【解决方案1】:

data.table

library(data.table)
a <- 1:5
x <- data.frame(a, b = a * 2, c = 1)
cols <- c("a", "d")
my_cols <- intersect(cols, names(x))

setDT(x)[, ..my_cols]
#>    a
#> 1: 1
#> 2: 2
#> 3: 3
#> 4: 4
#> 5: 5

reprex package (v2.0.0) 于 2021-07-09 创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 2016-10-06
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多