我希望有人可以帮助确定在使用延迟评估作为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以及当我这样做时要求列表。我检查了here,here和here并按照这些示例构建了我的代码,但没有成功。
包装版本: dplyr 0.4.2 lazyeval 0.1.10 数据表1.9.4
有没有人有任何想法?非常感谢你!
答案 0 :(得分:1)
只需替换为
filter_(.dots = filter_criteria)