1

ada記述子変数が と の両方である分類にパッケージをcategoric使用していますnumeric。これにより、pairs関数を呼び出すときに問題が発生します。以下は、私の問題を示す例です。

require(rpart)
require(ada)

data(car90, package = "rpart")
target = "Country"
input = setdiff(names(car90), target)

# ada only works with two distinct responses
car90 = car90[car90$Country %in% c("USA", "Japan/USA"), ] 

# remove surplus factor levels
car90$Country = as.character(car90$Country) 

adaCar90 = ada(car90[, input], car90[, target])
pairs(adaCar90, car90[, input], vars = 32:33)

# Error in pairs.default(as.matrix(rbind(train.data, test.x))[, vars],   
# lower.panel = panel.low,  :  non-numeric argument to 'pairs'  

関数の引数をnumeric使用して記述子のみを選択しても問題は解決しないようです。これを修正する方法を知っている人はいますか?varspairs

乾杯。

4

1 に答える 1

1

パッケージのメンテナーがadaあなたの特定のユースケースを予期していなかったようです。読み取りの最後の行ada:::pairs.ada

pairs(as.matrix(rbind(train.data, test.x))[, vars], lower.panel = panel.low, 
    upper.panel = panel.up)

問題は設置場所にあります[, vars]。コードは と を結合しtrain.datatest.x全体を行列に変換してからサブセットに変換します。train.data には多数の非数値列が含まれているためas.matrix、文字行列を返します。最後の行を次のように変更すると:

pairs(as.matrix(rbind(train.data, test.x)[, vars]), lower.panel = panel.low, 
    upper.panel = panel.up)

thenas.matrixは数値データを含むサブセットでのみ呼び出され、関数は機能します。

編集

上記で提案したことは長期的には優れた解決策だと思いますが、短期的にはもっと簡単な修正方法があるかもしれません:varsオプションを使用する代わりに、グラフに必要なトレーニング データの列のみを渡します。そうすれば、数値データのみがコードの最終行に渡されます。関数をハックする必要なく、おそらくグラフを取得できます。

于 2013-06-08T20:16:56.007 に答える