Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R?_R_Matrix_Vector - Fatal编程技术网

R?

R?,r,matrix,vector,R,Matrix,Vector,在R中,我听说向量是组织信息的一种“基本”方式,因为很多其他东西都是用向量来定义的,但向量不是用很多其他东西来定义的。矩阵也是基本的吗?矩阵和向量之间是否存在某种关系(也许R类似于C#,因为矩阵只是一个添加了一条微小指令的向量?矩阵(参见?矩阵,以及更一般的?数组)是按行或按列绑定在一起的向量 m <- matrix(0, 2, 2) m [,1] [,2] [1,] 0 0 [2,] 0 0 但是单个列(或行)不再是矩阵,在某种程度上,我们“回到”了

在R中,我听说向量是组织信息的一种“基本”方式,因为很多其他东西都是用向量来定义的,但向量不是用很多其他东西来定义的。矩阵也是基本的吗?矩阵和向量之间是否存在某种关系(也许R类似于C#,因为矩阵只是一个添加了一条微小指令的向量?

矩阵(参见
?矩阵
,以及更一般的
?数组
)是按行或按列绑定在一起的向量

m <- matrix(0, 2, 2)
m
      [,1] [,2]
[1,]    0    0
[2,]    0    0
但是单个列(或行)不再是
矩阵
,在某种程度上,我们“回到”了
向量

is.vector(m[, 1]) # you can also try is.matrix(m[, 1])
[1] TRUE
因此,在提取单个行/列时,
矩阵
类被“删除”。如果您不想保留它,您仍然可以:

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(m[, 1])
[1] "numeric"

class(m[, 1]>1)
[1] "logical"
如上所述:

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

有关详细信息,请参见
?数组
是的,矩阵是具有维度的向量。但是不要依赖于
is.vector()
来告诉你这一点。
class(m[, 1, drop=FALSE])
[1] "matrix"