我試圖通過將變數名作為引數傳遞來撰寫函式。然后在下游管道中使用它來改變變數。
使用更經典但可能有點笨拙的方法,我能夠做到這一點:
var = "Sepal.Width"
scale_fun1 = function(dat,var) {
dat[,"new_var"] = dat[,var]*100
return(dat)
}
scale_fun1(iris,var)
我認為使用管道會很簡單,但事實證明它更困難,然后我認為當函式傳遞管道 var 時,它不會決議,這會導致二進制運算子錯誤的非數字引數。請問這怎么解決?
var = "Sepal.Width"
scale_fun2 = function(dat,var) {
iris %>% dplyr::mutate(new_variable = var * 100)
}
scale_fun2(iris,var)
uj5u.com熱心網友回復:
您需要使用值得快速閱讀的非標準評估。在這種情況下,你很可能需要!!盈的var在發生變異線。
這是線路:
mutate(new_variable = !!sym(var) * 100)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/367024.html
上一篇:呼叫函式并將值放在角度形式組中
