2013-09-22 47 views
1

我正在使用具有函數f的庫。該函數接受幾個參數:一個對象,一個數據框和數據框中列的名稱。如果我手動調用它,它可以毫無問題地工作。我這樣稱呼它:在randomPorest包的partialPlot中使用變量名作爲參數

f(my_object, my_dataframe, 'A') 

但是,如果我把'A'放在一個變量中,它不起作用!澄清,我只是這樣做:

g = 'A'  
f(my_object, my_dataframe, g) 

而且我得到一個錯誤(未定義列選擇)。我嘗試了谷歌搜索,但沒有運氣。如果有人可以幫助,我會非常感激。


編輯:我在randomForest庫中使用partialPlot命令。這正是我正在打字的內容:

partialPlot(r,x,'pH') 

This Works!接下來,我給你的「PH」給一個變量,並嘗試完全相同的功能:

g = 'pH'  
partialPlot(r,x,g) 

這不工作,我得到以下錯誤:

Error in '[.data.frame'(pred.data, , xname) : undefined columns selected 

我還可以驗證g是我認爲它是:

print(g) 
#[1] "pH" 

class(g) 
#[1] "character" 
+0

你確定你傳遞''A''到'f'而不只是'A'嗎? –

+1

你在說什麼圖書館? – unique2

+2

它可能是一個類似的*交互式*功能,以'子集',請參閱http://stackoverflow.com/q/9860090/1201032 – flodel

回答

2

嘗試

g = quote(pH) 
partialPlot(r,x,g) 

罪魁禍首是隨機森林下面這段::: partialPlot.randomForest

x.var <- substitute(x.var) 
xname <- if (is.character(x.var)) 
    x.var 
else { 
    if (is.name(x.var)) 
     deparse(x.var) 
    else { 
     eval(x.var) 
    } 
} 

欲瞭解更多的背景看stackoverflow.com/q/9860090/1201032


此前嘗試(僅交互工作):

partialPlot(r,x,c(g))應工作。編寫c(g)而不是g使is.name(x.var)返回FALSE so eval而不是deparse被執行。

+0

這是交互式工作,但由於某種原因,它不適用於我的腳本。我得到以下錯誤:eval(expr,envir,enclos)中的錯誤:未找到對象'g'。調用:main ... partialPlot - > partialPlot。randomForest - > eval - > eval。執行停止。有任何想法嗎?謝謝您的幫助!我會嘗試調試它... –

+0

你如何執行你的腳本? – unique2

+0

我使用「Rscript ./myscript.r」,然後是optparse風格的參數 –

相關問題