我正在编写函数,并希望使用dplyr的filter()函数来选择满足条件的数据行。这是我的代码:
library(tidyverse)
df <-data.frame(x = sample(1:100, 50), y = rnorm(50), z = sample(1:100,50), w = sample(1:100, 50),
p = sample(1:100,50))
new <- function(ang,brad,drau){
df%>%filter(!!drau %in% 1:50)%>%select(ang,brad) -> A
return(A)
}
brand <- c("z","w","p")
lapply(1:3, function(i) new(ang = "x", brad = "y", drau = brand[i]))%>%bind_rows()
每次运行此函数时,似乎
filter
没有选择任何满足条件的行。
我该如何使其正常工作?
更新
出于某种原因,当我不使用`%in%`时,它可以正常工作,例如:
new <- function(ang,brad,drau){
df%>%filter(!!drau > 50)%>%select(ang,brad) -> A
return(A)
}
lapply(1:3, function(i) new(ang = "x", brad = "y", drau = brand[i]))%>%bind_rows()
然而,每个循环的结果都是相同的。为什么会这样?并且为什么我不能使用
%in%
。
filter_
。 - HubertL?filter_
,你会看到它已经被弃用了。 - hrbrmstr