私が持っていたRコードの古い部分を実行し、それをより効率的に傾動運動として実行しています。行列のi番目の行のすべての行をj回より効率的にR
私は、毎年(probMatrix)を表す366の行を持つ行列を持っています。 私は7つの行を持つ別のものを持っています。毎週の曜日(月曜日から)を表しています。これらの行列の両方に10個の列があります。
第2の行列には、各要素の最初の行列に(行単位で)乗算したい曜日のブール値が含まれています。
最後に、月曜日は2016年の4日目まで発生しなかったため、2番目の行列は正しい日数で乗算されるように4つ分オフセットする必要があります。 、
probMatrix <- matrix(rep((rep(1,366)), 10), ncol=10,byrow=TRUE)
booleanMatrix <- matrix(rep(c(0,0,0,0,1), 14), ncol=10, byrow=FALSE)
for (day in 1:7){
actualDay <- (day+3)
dayIndex <- c(seq(actualDay,366,7))
probMatrix[dayIndex,] <- sweep(probMatrix[dayIndex,],2,
as.numeric(booleanMatrix[day,]),"*")
}
を但し:
私はもともと毎日介して繰り返し処理を行い、週の最初の日に対応する第1のマトリックスの関連するインデックスを含むベクターを使用して、確率行列を掃引することをforループでした上記のように、これは非常に非効率的な方法です。私はこの種のコードがスクリプトを通してたくさん走っているので、少し速く動くものが欲しいです。
[最小、再現可能な例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を共有できますか? – shayaa
こんにちはshayaa、申し訳ありませんが、私は行列のセットアップの例を含めました。 – JamesHH