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