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