仅当列存在时才将其删除

标签 r dplyr

我只想从数据框中删除一个列,如果它存在的话。

例子:

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

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

最佳答案

数据表

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 创建于 2021-07-09 (v2.0.0)

关于仅当列存在时才将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68320773/

相关文章:

r - 使用 split.screen() 来处理不平衡的图形。整体标题位于正确位置,但经过修剪

r - 对具有宽数据的数据框进行卡方检验

r - 仅保留 3 列中至少有一列等于给定值的行

r - 在 R : NSE programing error in the tidyverse 中的函数中创建和使用新变量

r - 过滤向量的非零元素的管道/dplyr友好方式

r - 根据发生的天数生成给定频率的日期序列

r - 这个点是否位于多边形内?

r - styleColorBar 居中并根据符号向左/向右移动

r - 如何在不同的ggplot类型之间切换?

r - 为什么 dplyr 无法按行生成结果?