回答
可以用'scan'讀入它,或者只是在矩陣上做as.vector()。如果需要按行或列,您可能需要先轉置矩陣。該解決方案發布至今都是很噁心我還沒有想嘗試...
> m=matrix(1:12,3,4)
> m
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> as.vector(m)
[1] 1 2 3 4 5 6 7 8 9 10 11 12
> as.vector(t(m))
[1] 1 4 7 10 2 5 8 11 3 6 9 12
從?matrix
:「矩陣是二維'數組'的特例。」你可以簡單地改變矩陣/數組的尺寸。
Elts_int <- as.matrix(tmp_int) # read.table returns a data.frame as Brandon noted
dim(Elts_int) <- (maxrow_int*maxcol_int,1)
閱讀表返回一個data.frame不是矩陣。如果沒有as.matrix(),這仍然可以工作嗎? – 2010-09-29 16:16:18
@Brandon不會的;接得好! – 2010-09-29 16:21:37
您可以使用約書亞的解決方案,但我認爲你需要Elts_int <- as.matrix(tmp_int)
或者for循環:
z <- 1 ## Initialize
counter <- 1 ## Initialize
for(y in 1:48) { ## Assuming 48 columns otherwise, swap 48 and 32
for (x in 1:32) {
z[counter] <- tmp_int[x,y]
counter <- 1 + counter
}
}
z是一維向量。
如果我們談論data.frame,那麼你應該問自己是同一類型的變量?如果是這樣的話,你可以rapply,或選擇不公開使用,因爲data.frames的名單,在他們的靈魂深處......
data(mtcars)
unlist(mtcars)
rapply(mtcars, c) # completely stupid and pointless, and slower
'unlist'爲我工作。 – 2017-03-05 08:05:08
array(A)
或array(t(A))
會給你一個一維數組。
簡單和快速,因爲一維數組本質上是一個矢量
vector <- array[1:length(array)]
它可能是這麼晚了,反正這是我在矩陣轉換爲矢量方式:
library(gdata)
vector_data<- unmatrix(yourdata,byrow=T))
希望這將有助於
如果你有一個data.frame(df)有多個列,並且你想要矢量化,你可以做
as.matrix(df,ncol = 1)
這也適用於矩陣。 – 2017-01-25 15:11:28
您可以使用as.vector()
。它看起來是根據我的小基準最快方法,如下所示:
library(microbenchmark)
x=matrix(runif(1e4),100,100) # generate a 100x100 matrix
microbenchmark(y<-as.vector(x),y<-x[1:length(x)],y<-array(x),y<-c(x),times=1e4)
第一解決方案使用as.vector()
,第二個使用的是一個矩陣被存儲在存儲器中的連續的陣列和length(m)
給出了這樣的事實矩陣中元素的數量m
。第三個從x
實例化array
,第四個使用連接函數c()
。我也嘗試unmatrix
從gdata
,但它太慢,不能在這裏提到。
這裏有一些我所獲得的數值結果:
> microbenchmark(
y<-as.vector(x),
y<-x[1:length(x)],
y<-array(x),
y<-c(x),
times=1e4)
Unit: microseconds
expr min lq mean median uq max neval
y <- as.vector(x) 8.251 13.1640 29.02656 14.4865 15.7900 69933.707 10000
y <- x[1:length(x)] 59.709 70.8865 97.45981 73.5775 77.0910 75042.933 10000
y <- array(x) 9.940 15.8895 26.24500 17.2330 18.4705 2106.090 10000
y <- c(x) 22.406 33.8815 47.74805 40.7300 45.5955 1622.115 10000
平展矩陣在機器學習,共同操作,其中一個矩陣可以代表參數來學習,但一個從一個普通的採用優化算法庫期望一個參數向量。所以通常將矩陣(或矩陣)轉換成這樣的向量。標準R功能optim()
就是這種情況。
- 1. 將列轉換爲矩陣
- 2. 將陣列數組轉換爲矩陣
- 3. 將二維仿射變換矩陣轉換爲三維仿射變換矩陣
- 4. 要將m×n矩陣轉換爲1×n矩陣
- 5. 轉換爲單列矩陣
- 6. 將RleViews轉換爲矩陣
- 7. 使用張量流將3D矩陣轉換成二維矩陣
- 8. 將矩陣市場轉換爲CRS轉換(稀疏矩陣)
- 9. 如何將列矩陣轉換爲行矩陣在MATLAB
- 10. 將列表轉換爲numpy矩陣
- 11. 將列表轉換爲稀疏矩陣
- 12. 將嵌套列表轉換爲矩陣
- 13. 將矩陣列表轉換爲向量
- 14. 如何將列表轉換爲矩陣?
- 15. 將平面陣列轉換爲多維
- 16. 將二維矩陣轉換爲字符串列(java)
- 17. 將鋸齒陣列轉換爲幾個一維陣列
- 18. 如何將3x3旋轉矩陣轉換爲4x4矩陣?
- 19. 在Matlab中將單維矩陣轉換爲二維
- 20. 1維陣列,以2維陣列
- 21. 轉換向量單元陣列到二維矩陣 - MATLAB
- 22. 將數據幀轉換爲一個1和1的矩陣R
- 23. 將轉換矩陣轉換爲列表列表
- 24. 變換矩陣1×4成4X1矩陣
- 25. Opencv:將RGB矩陣轉換爲1d陣列
- 26. 如何在MATLAB中將陣列向量轉換爲矩陣
- 27. 在OpenCV中將矩陣轉換爲陣列/向量
- 28. Numpy:將RGB平面陣列轉換爲矩陣
- 29. 將數據幀轉換爲矩陣,並將第1列的df作爲矩陣的rownames
- 30. MATLAB:3D矩陣單元陣列轉換
這應該是被接受的解決方案,因爲問題標題清楚地表明矩陣輸入 – C8H10N4O2 2016-03-25 13:07:13
轉置矩陣是天才! – LostLin 2017-12-21 20:49:35