dpylr 中的 NSE 和字符串变量的示例

dplyr 使用非标准评估(NSE),这就是我们通常可以使用不带引号的变量名称的原因。但是,有时在数据管道中,我们需要从其他来源获取变量名称,例如 Shiny 选择框。在像 select 这样的函数的情况下,我们可以使用 select_ 来使用字符串变量进行选择

variable1 <- "Sepal.Length"
variable2 <- "Sepal.Width"
iris %>%
select_(variable1, variable2) %>%
head(n=5)
#  Sepal.Length Sepal.Width
#  1          5.1         3.5
#  2          4.9         3.0
#  3          4.7         3.2
#  4          4.6         3.1
#  5          5.0         3.6

但是如果我们想使用其他功能,如汇总或过滤,我们需要使用 interp 函数的 interp 函数

variable1 <- "Sepal.Length"
variable2 <- "Sepal.Width"
variable3 <- "Species"
iris %>%
select_(variable1, variable2, variable3) %>%
group_by_(variable3) %>%
summarize_(mean1 = lazyeval::interp(~mean(var), var = as.name(variable1)), mean2 = lazyeval::interp(~mean(var), var = as.name(variable2)))
#      Species mean1 mean2
#       <fctr> <dbl> <dbl>
# 1     setosa 5.006 3.428
# 2 versicolor 5.936 2.770
# 3  virginica 6.588 2.974