【问题标题】:What is the difference between "Large Matrix" and regular numeric matrix?“大矩阵”和常规数值矩阵有什么区别?
【发布时间】:2019-11-26 03:20:52
【问题描述】:

当一个相对较大的矩阵被创建时,Rstudio 在其环境窗口中将其标记为一个大矩阵:

 x <- matrix(rnorm(10000 * 5000), ncol=5000)
 # Large matrix (50000000 elements, 381.5 Mb)

mode() 函数按预期返回此对象的“数字”:

mode(x)
## [1] "numeric"

如果我运行以下命令:

mode(x) <- "numeric"

Rstudio 将“Large Matrix”改成常规数值矩阵:

# x:  num [1:10000, 1:5000]

那么这两个对象有什么区别呢?这种差异是否仅存在于 Rstudio 中,或者这两个对象在 R 中也不同?

【问题讨论】:

    标签: r matrix rstudio


    【解决方案1】:

    在我的理解中,“大矩阵”和matrix 是同一个矩阵对象。重要的是这些对象如何在 RStudio 的全局环境中显示

    RStudio 还区分向量和大向量。考虑以下向量:

    n <- 256
    v1 <- rnorm(n*n-5)
    

    这个向量被列为一个大向量。现在,让我们将其大小减一:

    v2 <- rnorm(n*n-6)
    

    突然间,它变成了一个法线向量。两个对象的结构是相同的(可以通过运行str 来验证)。他们的类和存储模式也是如此。那有什么不同呢?请注意,v2 在内存中的大小正好是 512 Kb。

    lobstr::obj_size(v2)
    >524,288 B # or exactly 512 kB
    

    v1 的大小略大:

    lobstr::obj_size(v1)
    >524,296 B # or 512.0078125 KB
    

    据我所知(如果我错了,请纠正我),为了方便,RStudio 以不同方式显示大于 512 kB 的对象。

    【讨论】:

      猜你喜欢
      • 2013-04-11
      • 2020-07-11
      • 2011-04-20
      • 2016-08-15
      • 2020-04-12
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      相关资源
      最近更新 更多