使用RStudio:
a <- rep(1, 1e4)
b <- rep(1, 1e5)
在环境窗格中,a
和b
的显示方式不同:
Large numeric
的含义是什么?我曾经认为这意味着b
由R以特殊方式处理,但使用str
我看不到任何特别的东西。我还阅读了long vectors,但它似乎只涉及长度为&gt; = 2 ^ 31的向量。
这是RStudio添加的纯信息性评论,用于通知用户对象的内存大小大于任意限制吗?
答案 0 :(得分:3)
这看起来像是大于半MB的对象的限定符。 See line 460 here
# for large objects (> half MB), don't try to get the value, just show # the size. Some functions (e.g. str()) can cause the object to be # copied, which is slow for large objects. if (size > 524288) { len_desc <- if (len > 1) paste(len, " elements, ", sep="") else "" # data frames are likely to be large, but a summary is still helpful if (is.data.frame(obj)) { val <- "NO_VALUE" desc <- .rs.valueDescription(obj) } else { val <- paste("Large ", class, " (", len_desc, capture.output(print(size, units="auto")), ")", sep="") } contents_deferred <- TRUE }
根据评论,这可以防止稍后的str()
调用复制对象,从而提高大对象的性能。
paste("Large", ...)
调用会创建修改后的说明。
在我的电脑上,这可以在这里证明:
small <- 1:131050
large <- 1:132000
object.size(small)
# 524240 bytes
object.size(large)
# 528040 bytes