[英]R: ada: how to use pairs on a dataframe with categorical descriptors?
我正在使用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
使用描述vars
的的參數pairs
功能似乎並沒有解決問題。 有誰知道我該如何解決?
干杯。
看起來ada
軟件包的維護者沒想到您的特定用例。 ada:::pairs.ada
最后一行顯示為:
pairs(as.matrix(rbind(train.data, test.x))[, vars], lower.panel = panel.low,
upper.panel = panel.up)
問題在於[, vars]
放置位置。 該代碼將train.data
和test.x
綁定在一起,然后將整個對象轉換為矩陣,然后轉換為子集。 因為您的train.data包含一堆非數字列, as.matrix
返回一個字符矩陣。 如果將最后一行更改為此:
pairs(as.matrix(rbind(train.data, test.x)[, vars]), lower.panel = panel.low,
upper.panel = panel.up)
然后僅在包含數字數據的子集上調用as.matrix
,該函數起作用。
編輯
我認為以上建議的是一個很好的長期解決方案,但短期解決方案可能更簡單:僅傳遞圖形需要的訓練數據列,而不使用vars
選項。 這樣,只有數字數據才能傳遞到該代碼的最后一行。 這可能會為您提供圖形,而無需修改功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.