【问题标题】:Matrix changed in vector矩阵在向量中改变
【发布时间】:2018-07-19 13:46:11
【问题描述】:

我有一个矩阵 [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]

【问题讨论】:

  • mat &lt;- mat[, which(mat[1,] != 10), drop = FALSE]请学习help("[")

标签: r matrix vector


【解决方案1】:

简答:

添加drop=FALSE,如mat[i,j,drop=FALSE]


长答案:

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

[W]注意选择单行或单列。在这种情况下,关于用户是否想要矩阵结果或包含单行或单列的向量存在一些问题。提供了这两个选项,并且选择由“[”运算符drop= 的特殊参数控制。如果这是TRUE,则单行和单列的维度“被删除”,返回一个向量;否则总是返回一个矩阵。默认是并且一直是drop=TRUE;很久以前,这可能是我们的一个不明智的决定,但现在是不太可能改变的向后兼容性负担之一。

同样,Norman Matloff 在他的R 编程艺术一书中将第 4.6 节(解决此问题的部分)命名为“降维:一个错误还是一个特性?”。

【讨论】:

    猜你喜欢
    • 2016-05-16
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    相关资源
    最近更新 更多