我正在编写我的函数,并想使用 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%, as 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%
.