我对R中的计算时间感到好奇,特别是在处理矩阵或数据帧时。让我们注意以下示例:
slowFun = function() {
mat = as.data.frame(matrix(rnorm(10000 * 10), 10000, 10))
mat[, (ncol(mat) + 1)] = NA
for (i in 1:nrow(mat)) {
mat[i,ncol(mat)] = sum(mat[i,], na.rm = T)
}
}
fastFun = function() {
mat = as.data.frame(matrix(rnorm(10000 * 10), 10000, 10))
mat[, (ncol(mat) + 1)] = NA
mat[,ncol(mat)] = rowSums(mat, na.rm = T)
}
system.time(slowFun())
system.time(fastFun())
> system.time(slowFun())
user system elapsed
3.614 0.219 3.837
> system.time(fastFun())
user system elapsed
0.012 0.001 0.013
rowSums令人印象深刻。当我试图了解它的全部内容时:
rowSums
它不让我看到它是如何编码的!我明白了。内心而且不知道在哪里看它 任何帮助将不胜感激。