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