【问题标题】:What are the differences between vector, matrix and array data types?向量、矩阵和数组数据类型有什么区别?
【发布时间】:2016-03-03 03:31:12
【问题描述】:

R 提供了三种类型来存储同质对象列表:vectormatrixarray

据我所知:

  • vector 是一维数组的特例
  • matrix 是二维数组的特例
  • array 也可以有任何维度级别(包括 1 和 2)。

在向量上使用一维数组和在矩阵上使用二维数组有什么区别?我们是否需要在它们之间进行转换,还是会自动发生?

【问题讨论】:

    标签: arrays r types


    【解决方案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() 等函数来最终确定向量、数组和矩阵等之间的差异可能很有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 2011-07-07
    • 2012-01-25
    • 1970-01-01
    • 2021-09-25
    • 2019-12-17
    相关资源
    最近更新 更多