更快的R:为什么R中的rowSums如此之快?

时间:2015-09-29 02:46:08

标签: r

我对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

它不让我看到它是如何编码的!我明白了。内心而且不知道在哪里看它 任何帮助将不胜感激。

0 个答案:

没有答案