这个小代码片段应该循环通过一个排序的数据框。它记录在 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