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