2017-09-15 146 views
-2

這裏是一個玩具例子:如何將列名作爲參數傳遞給函數?

df <- data.frame(user=c('a','b'), rating=c(1,2), age=c(17,33)) 

rating <- function(df, var){x <- df %>% summarise(sum(var))} 

rating(df,age) 

當我執行的功能,我得到以下錯誤:

Error in summarise_impl(.data, dots) : object 'age' not found

如何通過列名作爲參數傳遞給函數?

+2

你見過這個嗎? https://stackoverflow.com/a/26724721/322912 –

+0

這有點過時了,我會嘗試udden的建議。 – ronencozen

回答

4
library(tidyverse) 

df <- data.frame(user=c('a','b'), 
       rating=c(1,2), 
       age=c(17,33)) 

rating <- function(df, var){ 
    var <- enquo(var) 
    df %>% summarise(sum(!!var)) 
    } 

x <- rating(df,age) 
+0

enquo(var)錯誤:找不到函數「enquo」 – ronencozen

+1

嘗試再次安裝dplyr。該代碼使用最新版本的功能:https://blog.rstudio.com/2017/06/13/dplyr-0-7-0/ – udden2903

+0

謝謝,它的工作。 – ronencozen

相關問題