R中向量和矩阵之间的关系?

时间:2016-05-27 19:43:40

标签: r matrix vector

在R中,我听说过矢量是"基本的"组织信息的方式,因为许多其他事物是根据矢量定义的,但矢量不是根据许多其他事物来定义的。矩阵是否同样具有根本性?矩阵和向量之间是否存在关系(可能R就像C#,因为矩阵只是一个添加了一条微小指令的向量?)

1 个答案:

答案 0 :(得分:2)

矩阵(参见?matrix和更一般的?array)是按行或列方式绑定在一起的向量。

m <- matrix(0, 2, 2)
m
      [,1] [,2]
[1,]    0    0
[2,]    0    0

毫不奇怪,mmatrix

is.matrix(m)      # you can also try is.vector(m)
[1] TRUE

但是单个列(或行)不再是matrix,在某种程度上,我们会回来#34;到vector班。

is.vector(m[, 1]) # you can also try is.matrix(m[, 1])
[1] TRUE

所以matrix课程已被删除&#34;提取单行/列时。如果你想保留它,你仍然可以:

m[, 1, drop=FALSE]

这很有用,例如在您希望保留apply兼容性以及提取的行/列数可能是1的情况下。例如,根据条件或其他内容对矩阵进行子集化:

# this returns an error as m[, 1] is no longer a matrix
apply(m[, 1], 1, length)
Error in apply(m[, 1], 1, length) : dim(X) must have a positive length

# but this works like a charm
apply(m[, 1, drop=FALSE], 1, length)
[1] 1 1

最后,还有更精细的矢量类,称为“原子”和“原子”。 (请参阅?vector)并由class返回:

class(m[, 1])
[1] "numeric"

class(m[, 1]>1)
[1] "logical"

如上所示:

class(m[, 1, drop=FALSE])
[1] "matrix"