R有三种类型来存储同源对象列表:vector
,matrix
和array
。
据我所知:
vector
是1维数组的特殊情况matrix
是2维数组的特例array
也可以包含任何维度级别(包括1和2)。在矢量上使用1D数组和在矩阵上使用2D数组有什么区别?我们需要在这些之间施放,还是会自动发生?
答案 0 :(得分:32)
assert
和2D matrix
:
array
> x <- matrix(1:10, 2)
> y <- array(1:10, c(2, 5))
> identical(x, y)
[1] TRUE
...
只是一个更方便的构造函数,有许多函数和方法只接受2D数组(a.k.a.matrices)。
在内部,数组只是具有维度属性的向量:
matrix
矩阵和数组只是具有属性
... > attributes(x) $dim [1] 2 5 > dim(x) <- NULL > x [1] 1 2 3 4 5 6 7 8 9 10 > z <- 1:10 > dim(z) <- c(2, 5) > is.matrix(z) [1] TRUE
和的向量 可选dim
附加到矢量。[...]
dimnames
属性用于实现数组。的内容 数组以列主要顺序存储在向量中,dim
attribute是一个整数向量,指定了各自的范围 数组。 R确保向量的长度是其乘积 尺寸的长度。一个或多个维度的长度 可能是零。由于后者,矢量与一维数组不同 具有长度为1的昏暗属性,而前者没有暗淡 属性。
答案 1 :(得分:0)
在Java中,向量和数组之间的主要区别是内存分配。
向量是动态分配的。它们包含对创建的其他对象的引用的动态列表,并且可以保存来自不同类型的对象/数据类型的数据。它们的大小可以相对于推到矢量的对象轻松变化。
数组,另一方面,它们是静态的。他们使用固定的原始对象类型和固定的大小对数据进行分组。当块大小已满时,它们会将数组池的块大小增加一倍。
矩阵是末尾的二维数组。