向量、矩阵和数组数据类型有啥区别?
Posted
技术标签:
【中文标题】向量、矩阵和数组数据类型有啥区别?【英文标题】:What are the differences between vector, matrix and array data types?向量、矩阵和数组数据类型有什么区别? 【发布时间】:2016-03-03 03:31:12 【问题描述】:R 提供了三种类型来存储同质对象列表:vector
、matrix
和 array
。
据我所知:
vector
是一维数组的特例
matrix
是二维数组的特例
array
也可以有任何维度级别(包括 1 和 2)。
在向量上使用一维数组和在矩阵上使用二维数组有什么区别?我们是否需要在它们之间进行转换,还是会自动发生?
【问题讨论】:
【参考方案1】:matrix
和 2D array
之间没有区别:
> x <- matrix(1:10, 2)
> y <- array(1:10, c(2, 5))
> identical(x, y)
[1] TRUE
...
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
引用language definition:
矩阵和数组只是具有
dim
属性的向量和 可选dimnames
附加到向量。[...]
dim
属性用于实现数组。的内容 数组以列优先顺序存储在向量中,dim
属性是一个整数向量,指定相应的范围 数组。 R 确保向量的长度是 尺寸的长度。一维或多维的长度 可能为零。向量与一维数组不同,因为后者 具有长度为 1 的 dim 属性,而前者没有 dim 属性。
【讨论】:
“......内部数组只是向量......” - 类函数为向量和一维数组提供不同结果的事实如何? 您的问题是什么? R中有隐式类。 @Roland 也许你应该编辑你的答案以包括“有隐式类”的这些细节。详尽解释如何使用class()
、mode()
和typeof()
等函数来最终确定向量、数组和矩阵等之间的差异可能很有用。以上是关于向量、矩阵和数组数据类型有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章