簡體   English   中英

輸入變量名稱作為函數的參數

[英]entering variable name as argument of a function

我正在嘗試創建一個函數,它將運行並比較給定數據集和變量名稱的一組模型(基本上只能更改一個模型集並將它們應用於所有相關的因變量 - 選擇先驗模型集進行比較,而不是使用現有的數據挖掘功能(例如glmulti)進行比較。 一個簡單的例子:

RunModelset<- function(dataset, response)
{
  m1 <- lm(formula=response ~ 1, data=dataset) 
  m2 <- lm(formula=response ~ 1 + temperature, data=dataset)
  comp <- AICctab(m1,m2, base = T, weights = T, nobs=length(data))
  return(comp)
}

如果我在函數中手動輸入特定的變量名稱,它會正確運行模型。 但是,使用上面的代碼並為response參數輸入文本值不起作用:

RunModel(dataset=MyData,response="responsevariablename") 

產生錯誤:變量'dataset $ response'的類型無效(NULL),我解釋為它沒有找到我告訴它使用的列。 我的問題必須在於R如何在函數中插入文本值作為參數。

如何輸入響應變量名稱,以便R知道“formula = response~”變為“formula = dataset $ responsevariablename~”?

ETA基於此解決方案的 工作答案

RunModel<- function(dataset, response)
{
 resvar <- eval(substitute(response),dataset)
 m1 <- lm(formula=resvar ~ 1, data=dataset) 
 m2 <- lm(formula=resvar ~ 1 + R.biomass, data=dataset)
 comp <- AICctab(m1,m2, base = T, weights = T, nobs=length(data))
 return(comp)
}

RunModel(dataset=MyData,response=responsevariablename)

注意 - 當我在響應參數上引用時,這不起作用。

您應該能夠使用match.call()實現此目的。

這篇文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM