[R提供三种类型的存储同质对象的列表:vector,matrix和array.
据我所知:
vector 是1维数组的特例matrix 是2维数组的特例array 也可以有任何维度级别(包括1和2).在载体上使用1D数组和在矩阵上使用2D数组有什么区别?我们需要在这些之间施放,还是会自动发生?
Rol*_*and 35
a matrix和2D 之间没有区别array:
> x <- matrix(1:10, 2)
> y <- array(1:10, c(2, 5))
> identical(x, y)
[1] TRUE
...
Run Code Online (Sandbox Code Playgroud)
matrix 只是一个更方便的构造函数,有许多函数和方法只接受2D数组(也就是矩阵).
在内部,数组只是具有维度属性的向量:
...
> 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
Run Code Online (Sandbox Code Playgroud)
引用语言定义:
矩阵和数组只是具有属性的向量,
dim并且可选地dimnames附加到向量.[...]
该
dim属性用于实现数组.数组的内容以列主顺序存储在向量中,dim属性是指定数组各自范围的整数向量.R确保矢量的长度是尺寸长度的乘积.一个或多个维度的长度可以为零.向量与一维数组不同,因为后者具有长度为1的dim属性,而前者没有dim属性.