什么是RStudio中的"大型载体"?

Sca*_*bee 5 r rstudio

使用RStudio:

a <- rep(1, 1e4)
b <- rep(1, 1e5)
Run Code Online (Sandbox Code Playgroud)

在环境窗格中,ab显示不同的:

在此输入图像描述

这是什么意思Large numeric?我曾经认为这意味着bR由一种特殊的方式处理,但使用str我看不到任何特别的东西.我也读过有关长矢量的信息,但似乎只有长度> = 2 ^ 31的矢量.

它是由RStudio添加的纯信息性注释,用于通知用户对象的内存大小大于任意限制吗?

Chr*_*ris 3

这看起来像是大于半 MB 的对象的限定符。请参阅此处第 460 行

  # 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
  }
Run Code Online (Sandbox Code Playgroud)

根据评论,这可以防止以后的str()调用复制对象,从而提高大对象的性能。

paste("Large", ...)调用创建修改后的描述。

在我的计算机上,这可以在这里演示:

small <- 1:131050
large <- 1:132000

object.size(small)
# 524240 bytes
object.size(large)
# 528040 bytes
Run Code Online (Sandbox Code Playgroud)