0
testdata = round(matrix(runif(1e5),5000,20),1)
system.time({
for (i in 1:1e5) {
test1 = testdata[which(testdata[,1] == 0.5),]
}
})
system.time({
for (i in 1:1e5) {
test2 = testdata[testdata[,1]==0.5]
}
})
當我運行上面的代碼時,前者需要約5.0秒,而後者需要約5.9秒。 (在另一種情況下,前者只花費後者的三分之一時間)。爲什麼使用'which()'函數更快?
爲什麼通過'which()'命令進行子集化所花費的時間少於另一個?
這種比較是不公平的。第二個是子矩陣的元素,而第一個是子集的行。如果您嘗試'test2 = testdata [testdata [,1] == 0.5,]',速度幾乎相同。 – mt1022