ダブルループは私が好きではないだけでなく、3200レコードと1090個の変数を約12回繰り返して実行しているので、コンピュータで実行するのに14日かかります。レコードの結果とダブルループの比較
小さい再現可能ビット。 2つのレコード間で同じ列にある数値の数を確認します。NAは含まれません。次に、結果を元のデータフレームに添付します。
y <- data.frame(c(1,2,1,NA,NA),c(3,3,3,4,NA),c(5,4,5,7,7),c(7,8,7,9,10))
resultdf <- NULL
for(i in 1:nrow(y))
{
results <- NULL
for(j in 1:nrow(y))
{
results <- c(results,sum((y[i,]==y[j,]),na.rm=TRUE))
}
resultdf <- cbind(resultdf,results)
}
y <- cbind(y,resultdf)
私はおそらく約7日間離れることを避けることができる反復計算をしています。
私が正しく理解していれば、より速いかもしれないいくつかの適用関数がCにあります。私は仕事をすることができませんでした。より速く動くパッケージがあれば私はまた興味があります。誰でも計算をスピードアップするのに役立つことができますか?
ありがとうございました!
開始する前に 'y'を行列に変換するだけでどれくらいの速度が得られるのかを見て始めてください...' outer(y、y、== ==)の結果を並べ替えることで、 ")'適切に行と列の合計を取るが、私は今すぐそれを動作させる時間がありません... –
...私は "繰り返し計算"あなたはすべての(i、j )よりも上三角だけではなく... –
行列に変更すると、全部で約16分になります。そのヒントありがとう!そして、はい、それは三角形の1つを計算する代わりに計算を繰り返すことです。それについてどうやって行きますか?私はそれが下限を再計算するためにループの最後にi < - i + 1を追加していると推測していますが、決して行っていません。それを他の三角形にどのようにコピーしますか? – ARobertson