2017-11-10 4 views
1

私はここでRの初心者だ私は、残存期間を保存しようとしている非常に簡単なコードでいました。エラー* TMP *交換はxデータをy

# Create variables for child's EA: 

dat$cldeacdi <- rowMeans(dat[,c('cdcresp', 'cdcinv')],na.rm=T) 
dat$cldeacu <- rowMeans(dat[,c('cucresp', 'cucinv')],na.rm=T) 

# Create a residual score for child EA: 

dat$cldearesid <- resid(lm(cldeacu ~ cldeacdi, data = dat)) 

アイム次のメッセージが表示されます:

Error in `$<-.data.frame`(`*tmp*`, cldearesid, value = c(-0.18608488908881, : 
    replacement has 366 rows, data has 367 

このエラーは検索されましたが、これを解決するものが見つかりませんでした。さらに、私は、ママのEAのために全く同じコードを作成しました。そして、エラーなしで、残差を丁寧に保存しました。誰かが私にこれを解決するのを助けることができれば、私は感謝します。

答えて

1

あなたのデータにNAがある気がします。この例を見てください:

#mtcars data set 
test <- mtcars 
#adding just one NA in the cyl column 
test[2, 2] <- NA 

#running linear model and adding the residuals to the data.frame 
test$residuals <- resid(lm(mpg ~ cyl, test)) 
Error in `$<-.data.frame`(`*tmp*`, "residuals", value = c(0.382245430809409, : 
    replacement has 31 rows, data has 32 

これはあなたと同じようなエラーになります。検証として

length(resid(lm(mpg ~ cyl, test))) 
#31 
nrow(test) 
#32 

lm回帰を実行する前に設定されたデータにna.omitを実行しますので、この問題が発生したので、あなたは、NAとの任意の行を持っている場合、これらは、より少ない結果が得られ排除されます。

あなたのコードの先頭にあなたのdatデータセット(すなわちdat <- na.omit(dat)na.omitを実行する場合は、あなたのコードは動作するはずです。

+0

はとてもありがとうございました!あなたは右の点にあった!!助けて –

+0

ハッピー。 – LyzandeR

+0

実際には、私がna.omitを実行すると、私の変数を観測したように、私のデータセットが消去されていることに気がつきました。どうしてですか? –

関連する問題