矢量,矩阵和数组数据类型有什么区别?

时间:2015-11-29 12:15:53

标签: arrays r types

R有三种类型来存储同源对象列表:vectormatrixarray

据我所知:

  • vector是1维数组的特殊情况
  • matrix是2维数组的特例
  • array也可以包含任何维度级别(包括1和2)。

在矢量上使用1D数组和在矩阵上使用2D数组有什么区别?我们需要在这些之间施放,还是会自动发生?

2 个答案:

答案 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

引用language definition

  

矩阵和数组只是具有属性... > 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中,向量和数组之间的主要区别是内存分配

向量是动态分配的。它们包含对创建的其他对象的引用的动态列表,并且可以保存来自不同类型的对象/数据类型的数据。它们的大小可以相对于推到矢量的对象轻松变化。

数组,另一方面,它们是静态的。他们使用固定的原始对象类型和固定的大小对数据进行分组。当块大小已满时,它们会将数组池的块大小增加一倍。

矩阵是末尾的二维数组。