“大矩阵”和普通数值矩阵有什么区别?

9

当创建了一个相对较大的矩阵时,Rstudio会在其环境窗口中标记它为“大矩阵”:

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

如预期,mode() 函数返回该对象的 "numeric" 值:

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

如果我运行以下命令:

mode(x) <- "numeric"

Rstudio将“大矩阵”转换为常规的数字矩阵:

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

那么这两个对象之间有什么区别呢?这种区别仅在Rstudio中存在,还是这两个对象在R中也不同?

1个回答

1
在我的理解中,“Large Matrix”和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的对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接