この小さなコードスニペットは、ソートされたデータフレームをループすることになっています。これは、列aIndexとcIndex、およびbIndexとdIndexに同じ情報を持つ連続する行の数をカウントします。これらが同じである場合は、カウントをデポジットして次回の増分を行い、異なる場合は、カウントをデポジットして次回の1にリセットします。
for (i in 1:nrow(myFrame)) {
if (myFrame[i, aIndex] == myFrame[i, cIndex] &
myFrame[i, bIndex] == myFrame[i, dIndex]) {
myFrame[i, eIndex] <- count
count <- (count + 1)
} else {
myFrame[i, eIndex] <- count
count <- 1
}
}
長い間稼働しています。可能な限りベクトル化することになっていることは理解していますが、ここでは実際には見ていません。これを速くするために私は何をすべきですか?
実行後の数行の例は次のとおりです。
aIndex bIndex cIndex dIndex eIndex
1 2 1 2 1
1 2 1 2 2
1 2 4 8 3
4 8 1 4 1
1 4 1 4 1