识别包含给定值集合中任意一个值的列。

5

我有一个如下的数据框:

df <- data.frame(col1 = c(letters[1:4],"a"),col2 = 1:5,col3 = letters[10:14])
 df
  col1 col2 col3
1    a    1    j
2    b    2    k
3    c    3    l
4    d    4    m
5    a    5    n

我想要确定包含以下向量中任何值的列:

vals=c("a","b","n","w")

一个整洁的解决方案会很棒!
2个回答

3

我们可能会使用 select

library(dplyr)
df %>% 
   select(where(~ any(. %in% vals, na.rm = TRUE)))

-输出

   col1 col3
1    a    j
2    b    k
3    c    l
4    d    m
5    a    n

base R 中,有一个类似的选项是使用 Filter
Filter(\(x)  any(x %in% vals, na.rm = TRUE), df)
  col1 col3
1    a    j
2    b    k
3    c    l
4    d    m
5    a    n

3
另一个整洁化工具的选择是使用purrr中的keep()函数。
library(purrr)

df %>% 
  keep( ~ any(.x %in% vals))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接