2017-09-15 104 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

相关问题