【发布时间】:2017-12-26 22:11:09
【问题描述】:
我正在编写我的函数并想使用 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%。
【问题讨论】:
-
看看
filter_ -
@HubertL,是的,我知道,而且 filter_ 正在逐步淘汰
-
你在哪里读到这个?
-
@HubertL 在 dplyr 手册页中。执行
?filter_,您会看到它已被弃用。 -
不是真的……只是我的一个想法。由于这些功能是不推荐使用的版本,它们很可能很快就会被淘汰。我不想使用它们。