2017-10-07 54 views
1

我已經寫了這個功能,只需更換一個數據表的列中的每個值與其子:如何將列名傳遞給使用dplyr的自定義函數?

substrColName <- function(df, colName, start) { 
    df %>% mutate(colName = substr(colName, start=start, stop=nchar(colName))) 
} 

但我嘗試運行它每次我得到的錯誤:

Error in as.character(x) : cannot coerce type 'closure' to vector of type 'character' 

現在我已經做了大量的研究,爲什麼它不起作用,但我無法弄清楚。我讀過一些標準評估和lazyeval的東西,但沒有我嘗試似乎工作。任何幫助?

謝謝

+0

你能否提供與您在運行該函數的數據? – useR

+0

看到這個https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html學習與dplyr編程。 – www

回答

1

謝謝,@ycw,這是一個很好的閱讀。在完成文章之後立即開始工作。這是在一天結束的解決方案:

substrColName <- function(df, colName, start) { 
    colNameQuo <- enquo(colName) 
    df %>% mutate(!!quo_name(colNameQuo) := substr(!!colNameQuo, start=start,stop=nchar(!!colNameQuo))) 
} 

And this is ycw's comment.

+0

你可以接受你自己的回答:) – useR

相關問題