【问题标题】:nrow(matrix) functionnrow(矩阵)函数
【发布时间】:2012-05-12 10:08:56
【问题描述】:

我有一个使用 R 的作业并且有一点问题。在分配中,必须生成具有随机行数的矩阵,然后用于各种计算。一切都很完美,除非行数为 1。

在计算中,我以不同的方式使用 nrow(matrix),例如 if (i <= nrow(matrix) ) {action} 以及 matrix[,4] 等语句。

所以如果行数为 1(我知道它实际上是向量)R 给出错误,肯定是因为 nrow(1-dimensional matrix)=NULL。有没有简单的方法来处理这个?否则可能整个代码都必须重写,但我的时间很短:(

【问题讨论】:

    标签: r statistics


    【解决方案1】:

    并不是 R 中的单行/列矩阵将 ncol/nrow 设置为 NULL——在 R 中,一切都是一维向量,可以像矩阵一样表现(即显示为矩阵,接受矩阵索引等),当它具有dim 属性集时。似乎并非如此,因为简单地将矩阵索引到单行或单列丢弃 dim 并使数据处于其默认(一维向量)状态。

    因此,您可以通过直接重新创建向量的dim 属性(例如称为 x)来实现您的目标:

    dim(x)<-c(length(x),1)
    x #Now a single column matrix
    
    dim(x)<-c(1,length(x))
    x #Now a single row matrix
    

    或者通过添加drop=FALSE 参数来防止[] 运算符删除dim

    x<-matrix(1:12,3,4)
    x                #OK, matrix
    x[,3]            #Boo, vector
    x[,3,drop=FALSE] #Matrixicity saved!
    

    【讨论】:

      【解决方案2】:

      让我们将您的矢量称为x。尝试使用matrix(x)t(matrix(x)) 将其转换为适当的(2D)矩阵。

      【讨论】:

        猜你喜欢
        • 2015-10-09
        • 2020-01-19
        • 1970-01-01
        • 2017-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-11
        相关资源
        最近更新 更多