nrow(矩阵)函数

时间:2012-05-12 10:08:57

标签: r statistics

我使用R进行分配并遇到一些问题。在分配中,必须使用随机行数生成几个矩阵,然后将其用于各种计算。除非行数为1,否则一切都很完美。

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

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

2 个答案:

答案 0 :(得分:7)

R中的单行/ col矩阵不是ncol / nrow设置为NULL - 在R中,一切都是1D向量,可以表现得像矩阵(即当它具有dim属性集时,显示为矩阵,接受矩阵索引等。看起来似乎是因为简单地将矩阵索引到单个行或列 drop dim并将数据保留为其默认(1D向量)状态。

因此,您可以通过直接重新创建向量的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

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

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

答案 1 :(得分:4)

让我们调用你的向量x。尝试使用matrix(x)t(matrix(x))将其转换为正确的(2D)矩阵。