向量矩阵改变

时间:2018-07-19 13:46:11

标签: r matrix vector

我有一个矩阵[1,n],我想理解为什么在删除向量的某些值时它会在向量中改变。

这是我的问题的说明示例:

> mat<-matrix(seq(1:10),1,10)
> mat
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    2    3    4    5    6    7    8    9    10

mat是矩阵[1,10]

> mat<-mat[,which(mat[1,]!=10)]
> mat
[1] 1 2 3 4 5 6 7 8 9

mat现在是向量[9]

1 个答案:

答案 0 :(得分:0)

简短答案:

添加drop=FALSE中的mat[i,j,drop=FALSE]


长答案:

John Chambers摘录的数据分析软件的第202-203页:

[W]跳出以选择单个行或列。在这种情况下,存在一个有关用户是否需要矩阵结果或包含单个行或列的向量的问题。提供了两个选项,并且选择由'['运算符drop=的特殊参数控制。如果这是TRUE,则单行和单列的尺寸将被“丢弃”,并返回向量;否则,总是返回一个矩阵。默认值为,并且始终为drop=TRUE;可能是我们很久以前做出的不明智的决定,但是现在这些不太可能改变的反向兼容负担之一。

类似地,诺曼·马特洛夫(Norman Matloff)在他的《 编程的艺术》( )一书中,将第4.6节(解决此问题的这一节)的标题定为“降维:错误还是功能?”。