R:用NULL初始化时,向量的大小或结构是什么

  • 本文关键字:是什么 结构 向量 NULL 初始化 r
  • 更新时间 :
  • 英文 :


下面的代码可以工作,但如何理解这样的初始化。

谢谢。

a_vector <- NULL
n = 100 # or a whatever number you give
for(i in c(1:n)){
a_vector[i]=i
}

我不确定你是否在试图理解你所说的长度的对象大小,但我的理解是这样的。

您可以使用lobstr包来测量它们的大小,基本R也有一个名为object.size的函数。让我们试着用下面的方法来测量物体的大小。

library(lobstr)
x <- NULL
obj_size(x) ## 0 B with type NULL with length 0
for(i in 1:1000){
x[i] <- i
}

CCD_ 3,用大量检查它仍然会返回56字节

但是,obj_size(x(在迭代后会返回4048字节,如果你检查typeof(x),它是一个整数,那么为什么一个对象占用56个字节,而1000个对象只返回4048个字节呢?,如果我们仔细检查,我们会发现第一个obj_size(x[1:2])只返回56个字节,但是如果你执行obj_size(x[1:3]),你会得到64个字节。如果你继续这样做,你会意识到obj_size(x[1:8])只返回80个字节。你可以像我下面做的那样在循环中检查这些对象的大小(创建y(,并跟踪对象大小的变化。在循环结束时,您可以看到对象x和y都有相似的大小,只要它们有相似的数据类型,我必须将y强制为integer,因为obj_size返回一个双值。

x <- NULL ## 0 bytes initialization used only as NULL
y <- vector('integer', 1000) ## 4048 bytes, initialized before loop the value will remain same after the loop ends
for(i in 1:1000){

x[i] <- i
y[i] <- obj_size(x[1:i])
}
y <- as.integer(y)
obj_size(x) ## 4048 bytes with length of x as 1000
objd_size(y) ## 4048 bytes with length of y as 1000

最新更新