用于非标准评估(NSE)的R dplyr过滤器“.dots缺失,没有默认值”

时间:2015-10-13 20:06:41

标签: r data.table dplyr lazy-evaluation

我希望有人可以帮助确定在使用延迟评估作为dplyr filter_动词的一部分时收到错误消息的原因。最终目标是使用函数通过引用传递参数,但我已将问题缩小到函数之外。

library(dplyr)
library(lazyeval)
library(data.table)

data_raw_dt <- data.table(
  R_dates = seq(from = as.Date("2015/8/31"), by = "1 day", length.out = 30),
  grp_region = sample(letters[1:4], 30, replace = TRUE),
  z_valuation = rnorm(30)
)

# Create some NAs
data_raw_dt$grp_region[data_raw_dt$grp_region == "d"] <- NA

dates = "R_dates"
group = "grp_region"
column = "z_valuation"
filter_criteria = interp(~(!is.na(var)), var = as.name(group))

data_raw_dt %>%
  filter_(filter_criteria)

但是这会给出以下错误消息: “lazyeval :: common_env(.dots)中的错误:   参数“.dots”缺失,没有默认值“

在这种情况下,我不知道如何指定.dots以及当我这样做时要求列表。我检查了hereherehere并按照这些示例构建了我的代码,但没有成功。

包装版本: dplyr 0.4.2 lazyeval 0.1.10 数据表1.9.4

有没有人有任何想法?非常感谢你!

1 个答案:

答案 0 :(得分:1)

只需替换为

filter_(.dots = filter_criteria)