2016-08-25 12 views
-1

私のデータフレームをループするforループを作成しようとしていて、doubleであるAcquisitionTimeに対してすべてのカラムの線形回帰を実行しています。すべての列の長さは同じです。最終的には、forループの代わりにapply関数の1つを使用したいが、私はrで本当に新しいので、apply関数は私には意味がない。このエラーの原因となっている何リニア回帰を行うときにrの "Variable Length Differ"エラーを修正する方法

Error in model.frame.default(formula = i ~ AcquisitionTimes, data = raw_data,: 
variable lengths differ (found for 'AcquisitionTimes') 

:私はこのコードを実行すると

##pdf("ROIs_vs_AcquisitionTime_lm.pdf") 
x = 0 
for (i in names(raw_data)){ 
    if(x > 9){ 
    fit <- lm(i ~ AcquisitionTimes, data = raw_data) 
    ##print(ggplotRegression(fit)) 
    } 
    x <- x + 1 
} 
##dev.off() 

私はこのエラーを取得しますか?私はraw_dataという名前の他のデータフレームがあるかどうかを調べましたが、私はそうしませんでした。私はRのオブジェクトをクリアして、それが役立つかどうかを確認しました。私が読んだところでは、これは変数AcquisitionTimesがデータフレームに存在しないか、またはデータのどこかに同じ変数名があるためです。これまで私は何も発見していない。

+0

になります。 – Chriscross

+0

恐ろしい、ありがとう@Chriscross実際には、リンクの代わりにデータを共有するために 'dput()'を使うことをお勧めしますが、今回は心配しないでください。 –

+5

私が見ることができる1つの問題は、lm(i〜AcquisitionTimes、data = raw_data)です。これがうまくいかない理由は、 'i'がここの文字列であり、残りの式の形式と異なるからです。 'lm(paste(i、"〜AcquisitionTimes ")、data = raw_data)'を実行することで、これを修正できます。 – jav

答えて

1

私はすでに私のコメントで修正が、以下の簡単な例は、あなたのエラーを再現することができます言及している:

data(iris) 
i = "Sepal.Length" 
lm(i ~ Sepal.Width, data = iris) 

あなたは私たちが代わりに行うことができ、これを修正するには

Error in model.frame.default(formula = i ~ Sepal.Width, data = iris, drop.unused.levels = TRUE) : 
variable lengths differ (found for 'Sepal.Width') 

が表示されます。

lm(paste(i , "~ Sepal.Width"), data = iris) 

予想通りに動作する:

あなたの場合は
Call: 
lm(formula = paste(i, "~ Sepal.Width"), data = iris) 

Coefficients: 
(Intercept) Sepal.Width 
    6.5262  -0.2234 

、それは[OK]を、私はそれを編集します@ZheyuanLi

lm(paste(i, "~ AcquisitionTimes"), data = raw_data) 
関連する問題