3

関数fを持つライブラリを使用しています。この関数は、オブジェクト、データフレーム、データフレーム内の列の名前など、いくつかの引数を受け入れます。手動で呼び出すと問題なく動作します。私はそれを次のように呼びます:

f(my_object, my_dataframe, 'A')

しかし、変数に「A」を入れると、うまくいきません! 明確にするために、私はこれを行うだけです:

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

エラーが発生します(未定義の列が選択されています)。私はこれを理解するためにグーグルを試みましたが、運がありません。誰かが助けてくれれば、本当に感謝しています。


編集: randomForest ライブラリで partialPlot コマンドを使用しています。これがまさに私が入力しているものです:

partialPlot(r,x,'pH')

これはうまくいきます!次に、「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"
4

2 に答える 2

3

試す

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

原因は、randomForest:::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)ます。gis.name(x.var)FALSEevaldeparse

于 2013-09-22T01:28:25.200 に答える