下面的代码可以工作,但如何理解这样的初始化。
谢谢。
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