2016-04-25 8 views
-1

何千もの質問がありましたが、私はまだ問題を解決できないようです。私は、この二重のループを実行しようとしていますR適合しない引数

rho=matrix(0,12,1) 

for (i in 1:k){ 
    for (j in 1:n-k){ 
    temp=((1/(sigma^2))*(1/(n-i)))*((as.matrix(vR)[j,]-mean)%*%(as.matrix(vR)[i+j,]-mean)) 
    rho[i,]=temp 
    } 
}  

を私はエラーを取得しておいてください。

Error in (as.matrix(vR)[j, ] - mean) %*% (as.matrix(vR)[i + j, ] - mean) : non-conformable arguments

また、私の式は次のとおりです。

(1/sigma^2) * (1/(t-k)) * sum[(vR(t)-mean)*(vR(t+k)-mean)] 

合計されます " t = 1からTkに行く大きなシグマ "

私はやっているように動かすことは可能ですか?

+1

あなたは、これが再現可能にすることができます。..他の人がそれを動かすことができますか? – cory

+0

あなたは 'm [k、、drop = FALSE]'と 'm [、k、drop = FALSE]'が好きでしょうか? – Frank

+0

@coryデータを追加しました。 – Anders

答えて

2

crossprod関数のベクトルの「行列乗算」を処理するためのより安全な方法があります。さらに、私はあなたのエラーは、実際には、配列関数の演算子の優先順位から、大部分の幹かもしれないと思う「:」オーバー内側のループインデックスの設定で「 - 」機能:

for (i in 1:k){ 
for (j in 1:(n-k)){ # note inner parentheses, safer to always use with "(" 
temp=((1/(sigma^2))*(1/(n-i)))*crossprod(vR[j,]-mean,vR[i+j,]-mean) 
rho[i,]=temp 
} 
} 
+0

ありがとうございました。これは私の問題を解決し、私の結果はいくつかの良い値のように見えます。ループのparanthesisはそれだけですべてでした。あなたはただ私の夕食を保存しました:) – Anders

関連する問題