dplyr::如何在“过滤器”中使用SE和“%in%”?
考虑dplyr::如何在“过滤器”中使用SE和“%in%”?,r,dplyr,R,Dplyr,考虑 df = data.frame(col1 = 1:3, col2 = 2:4) 我想做什么 df %>% filter(col1 %in% 2:3) 它应该返回第二行和第三行,但是col1作为字符串作为变量str_1=“col1” 所以我试过了 str_1 = "col1" df %>% filter(!!!str_1 %in% 2:3) df %>% filter(!!str_1 %in% 2:3) 尼瑟工作。这个的正确语法是
df = data.frame(col1 = 1:3, col2 = 2:4)
我想做什么
df %>%
filter(col1 %in% 2:3)
它应该返回第二行和第三行,但是col1
作为字符串作为变量str_1=“col1”
所以我试过了
str_1 = "col1"
df %>%
filter(!!!str_1 %in% 2:3)
df %>%
filter(!!str_1 %in% 2:3)
尼瑟工作。这个的正确语法是什么?还有什么更容易记住这些dplyr技巧的方法呢?当您将列名作为字符串时,您可以在处使用
filter\u
library(dplyr)
df %>% filter_at(str_1, any_vars(. %in% 2:3))
#This seems to work as well
#df %>% filter_at(str_1, ~. %in% 2:3)
# col1 col2
#1 2 3
#2 3 4
dplyr
中的filter\u at
与所有其他\u at
变体一样,具有一个.vars
参数,该参数接受列名或位置的字符向量以应用函数 df%>%filter(!!sym(str_1)%in%2:3)
解释filter_的意思?@xiaodai添加了一些解释。