An1*_*116 5 r subset dataframe
假设我有这个数据框(但想象它有数百个变量 x、y 等)。
df = data.frame ( x = c(1,2,3,4,5), y = c(1,2,3,4,5))
Run Code Online (Sandbox Code Playgroud)
我希望删除任何变量中包含 1 或 5 的行。
我熟悉以下算法:
df[!(df$x==1|df$x==5|df$y==1|df$y==5),]
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一个可以同时处理数百个变量的小函数。
使用if_any
library(dplyr)
df %>%
filter(!if_any(everything(), ~ .x %in% c(1, 5)))
Run Code Online (Sandbox Code Playgroud)
-输出
x y
1 2 2
2 3 3
3 4 4
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码:
df = data.frame ( x = c(1,2,3,4,5), y = c(1,2,3,4,5))
df[rowSums(df==1|df==5)==0,]
#> x y
#> 2 2 2
#> 3 3 3
#> 4 4 4
Run Code Online (Sandbox Code Playgroud)
创建于 2022-10-07,使用reprex v2.0.2
df = data.frame ( x = c(1,2,3,4,5), y = c(1,2,3,4,5))
df[rowSums(df[-1]==1|df[-1]==5)==0,]
#> x y
#> 2 2 2
#> 3 3 3
#> 4 4 4
Run Code Online (Sandbox Code Playgroud)
创建于 2022-10-07,使用reprex v2.0.2