当前位置:  开发笔记 > 编程语言 > 正文

在R中,为什么v [length(v)+1] = x比c(v,x)更好?

如何解决《在R中,为什么v[length(v)+1]=x比c(v,x)更好?》经验,为你挑选了0个好方法。

我编写了以下两个函数,一个用于使用连接测试增加的向量大小,另一个用括号测试:

c_test <- function(n) {
  cv = c()
  for(i in 1:n) cv = c(cv, i)
  cv
  }

b_test <- function(n) {
  bv = c()
  for (i in 1:n) bv[i] = i
  bv
  }

library(microbenchmark)
microbenchmark(c_test(1e+4), b_test(1e+4), times = 100)

#Unit: milliseconds
#          expr       min        lq      mean    median        uq      max neval
# c_test(10000) 140.27923 145.73282 156.82319 148.16175 151.74713 267.2393   100
# b_test(10000)  49.58033  54.42992  56.24268  54.86033  56.30862 132.8394   100

这是一个很大的时间差异,我不明白为什么使用括号比使用连接更好.在这两种情况下似乎都需要时间来分配新的内存,但这似乎并不正确.我还认为它可能会c(v, x)转换x为与v合并之前相同的类型,但是说v[i] = as.vector(x)并不是一个重要的时间成本.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有