2012-05-12 96 views
8

我有使用R的任務,並有一點問題。在賦值時,必須用隨機數的行生成幾個矩陣,然後用於各種計算。一切都運行完美,除非行數爲1nrow(矩陣)函數

在我用不同的方式nrow(矩陣)的計算,例如if (i <= nrow(matrix)) {action}也像matrix[,4]等語句。因此,如果行數爲1(我知道它實際上是矢量),R給出錯誤,肯定是因爲nrow(1維矩陣)= NULL。有沒有簡單的方法來處理這個問題?否則,很可能整個代碼已經被改寫,但我的時間很短:(

回答

4

讓我們把你的矢量x。嘗試使用matrix(x)t(matrix(x))將其轉換成一個適當的(2D)矩陣。

+0

謝謝,你救了我 - 它工作! – Michinio

7

它是不是R中的單行/列矩陣有ncol/nrow設爲NULL - 在R中,一切都是一維向量,它可以表現爲矩陣(即顯示爲矩陣,接受矩陣索引等) dim屬性集,看起來不然,因爲簡單地將矩陣索引到單個行或列下降dim並使數據保留在其默認(一維矢量)狀態。通過防止[]運營商掉落dim加入drop=FALSE參數

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

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

OR:

因此,你可以通過直接再造一個載體dim屬性(比如它被稱爲X)實現自己的目標

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