web-dev-qa-db-ja.com

eval(expr、envir、enclos)のエラー:オブジェクトが見つかりません

ここで何が悪いのか理解できません。

data.train <- read.table("Assign2.WineComplete.csv",sep=",",header=T)
# Building decision tree
Train <- data.frame(residual.sugar=data.train$residual.sugar,
                total.sulfur.dioxide=data.train$total.sulfur.dioxide, 
                alcohol=data.train$alcohol,
                quality=data.train$quality)
Pre <- as.formula("pre ~ quality")

fit <- rpart(Pre, method="class",data=Train)

次のエラーが表示されます。

Error in eval(expr, envir, enclos) : object 'pre' not found
14
Rads

@Janosが答えを削除した理由はわかりませんが、それは正しいです。データフレームTrainにはpreという名前の列がありません。数式とデータフレームをモデル近似関数に渡す場合、数式の名前はデータフレームの列を参照する必要があります。 Trainには、residual.sugartotal.sulfuralcohol、およびqualityという列があります。式が一致するように、式またはデータフレームを変更する必要があります。

そして明確にするために:Preは式を含むオブジェクトです。この式には、変数preへの参照が含まれています。データフレームと一致する必要があるのは後者です。

17
Hong Ooi

これに追加するだけです。これは、データセットを添付しない場合に発生する可能性があります。これも同様に考えて30分無駄になります。

乾杯

12

探していたものを手に入れたと思います。

data.train <- read.table("Assign2.WineComplete.csv",sep=",",header=T)
fit <- rpart(quality ~ ., method="class",data=data.train)
plot(fit)
text(fit, use.n=TRUE)
summary(fit)
1
Rads

私はcolname(train)= paste( "A"、colname(train))を使用しますが、それはあなたと同じ問題になります。

RandomForestはrpartよりもケチであり、スペース、コンマ、またはその他の特定の句読点を含むcolnameを認識できないことが最後にわかりました。

貼り付け関数は、各列名の区切り文字として「A」と「」を追加します。そのため、スペースを回避して、代わりに次の文を使用する必要があります。

colname(train) = paste("A", colname(train), sep = "")

これにより、スペースなしで文字列が追加されます。

0
ZHENKAI