我無法弄清楚如何從作為字串(函式輸入)傳遞的資料幀中呼叫變數名的簡單問題。
我有一個函式定義為:
box_lambda = function(Valuename,data1){
data1[,Valuename]=ifelse(data1[,Valuename]==0,0.000001,data1[,Valuename])
b= boxcox(get(Valuename) ~ Age.Group Sex , data = data1)
lambda <- b$x[which.max(b$y)]
return(lambda)
}
但這不起作用,因為我收到錯誤:
Error in eval(f): 'list' object cannot be coerced to type 'double'
我試過了
data1[[Valuename]]=ifelse(data1[Valuename]]==0,0.000001,data1[[Valuename]])
任何幫助表示贊賞!
uj5u.com熱心網友回復:
首先,您丟失了尋址欄位所需的括號:
data1[[Valuename]]
您還可以使用 [here][1] 和 [here][2] 中的一系列其他方法。例如,您可以使用:
library(dplyr)
data %>%
filter(!!as.name(Valuename) == 0)
所以最后你可以使用:
data1[[Valuename]][data1[[Valuename]]==0] <-0.000001
此腳本將用 epsilon 替換 0 并保留其他值。[1]:https ://stackoverflow.com/a/74173690/5043424 [2]:https ://stackoverflow.com/a/48219802/5043424
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/519560.html
標籤:r数据框功能
