2017-07-26 47 views
1

私は次のように簡単なフィッティングと相互検証を使用しようとしています:Rの "Variable Length Differ"エラーの原因は何ですか?

library(ISLR) 
attach(Auto) 

Auto$cut.values = cut(displacement,2) 
fit = glm(mpg~Auto$cut.values) 
cv.glm(Auto, fit, K=10)$delta[1] 

をしかし、私のようにエラーが表示されます。

Error in model.frame.default(formula = mpg ~ Auto$cut.values, data = list(: variable 
lengths differ (found for 'Auto$cut.values') 

しかし、私は少し変更しようとした場合3行目を実行してエラーを表示し、結果を得る:

Auto$cut.values = cut(displacement,2) 
fit = glm(mpg~cut.values, data = Auto) 
cv.glm(Auto, fit, K=10)$delta[1] 

私が知る限り、cut.values, data = AutoAuto$cut.valuesと同じです。

ここでは何が欠けていますか?

+0

「mpg」についてなぜあなたは 'カット'だけを気にかけますか? mpgが何を参照しているのかを定義する必要があります。 – Masoud

+0

私はそれに言及するのを忘れました。しかし、私は前にアタッチ(自動)を使用しました。 –

+3

'attach'を使うのはお勧めできません。これは一般的な問題の原因です。一時的なアナログ 'with'を使うことができ、多くの関数には同じ目的を果たすデータ引数があります。 – lmo

答えて

2

最初にattachデータセットには、cut.valuesという変数がありません。したがって、後でそれを参照することはできません。

attachの恩恵を受ける場合は、データセットに別の変数を追加した後にattach(Auto)にする必要があります。

library(ISLR) 
attach(Auto) 

Auto$cut.values = cut(displacement,2) 
attach(Auto) 

fit = glm(mpg~cut.values) 
cv.glm(Auto, fit, K=10)$delta[1] 
関連する問題