2017-05-25 27 views
0

這個問題的變體已經被問了很多,我也讀過關於NSE的內容。 但我無法弄清楚這一點。在dplyr中傳遞列名作爲變量

這很簡單:

library(dplyr) 
data(cars) 

cars %>% 
    group_by(speed) %>% 
    summarise(d = mean(dist)) 

現在我想用變量x傳遞DIST列意味着

x <- "dist"

當然,這並不工作:

cars %>% 
    group_by(speed) %>% 
    summarise(d = mean(x)) 

所以我用SE版總結:

cars %>% 
    group_by(speed) %>% 
    summarise_(d = mean(x)) 

好,不工作,所以我要補充~還有:

cars %>% 
    group_by(speed) %>% 
    summarise_(d = ~mean(x)) 

仍然無法正常工作,但如果使用dist代替x

cars %>% 
    group_by(speed) %>% 
    summarise_(d = ~mean(dist)) 

該作品,但不使用x。

cars %>% 
    group_by(speed) %>% 
    summarise_(d = ~mean(~x)) 

這也行不通。

我基本上不知道如何使這項工作,或爲什麼失敗。

回答

2
cars %>% 
    group_by(speed) %>% 
    summarise_each_(funs(mean), vars(matches(x))) 
+0

謝謝!我的問題是,正在做更像這樣的事情:汽車%>% group_by(speed)%>% summarise_(d =〜quantile(dist,c(0.95),na.rm = T)[1])'Do你也有解決方案嗎? – juwi

+1

我傾向於首先用參數定義一個函數,例如分位數< - 函數(x)分位數(x,.95,na.rm = T)'。這樣,'summarise_each'仍然可以運行:'cars%>%group_by(speed)%>%summarise_each_(funs(分位數),vars(matches(「dist」)))' –

相關問題