当创建一个相对较大的矩阵时,Rstudio在其环境窗口中将其标记为大矩阵:
x <- matrix(rnorm(10000 * 5000), ncol=5000)
# Large matrix (50000000 elements, 381.5 Mb)
mode(( 函数按预期返回此对象的"数字":
mode(x)
## [1] "numeric"
但是,如果我运行以下命令:
mode(x) <- "numeric"
Rstudio将"大矩阵"更改为常规数字矩阵:
# x: num [1:10000, 1:5000]
那么这两个对象有什么区别呢?这种差异是否只存在于 Rstudio 中,或者这两个对象在 R 中也不同?
在我的理解中,"大矩阵"和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 的对象。