【已解決】R語言添加行、列,轉置操作

嚴格來說,矩陣的長度和維度是固定的,因此不能增加或刪除行或列。但是可以給矩陣重新賦值,這樣可以得到和增加或刪除一樣的效果。

 

    函數rbind()(代表row bind,按行組合)和函數cbind()(代表column bind,按列組合)可以給矩陣增加行或列。

> one <- c( 1, 1, 1, 1 )

> z <- matrix( c( 1, 2, 3, 4, 1, 1, 0, 0, 1, 0, 1, 0 ),nrow=4 )

> cbind( one, z )

     one      

[1,]   1 1 1 1

[2,]   1 2 1 0

[3,]   1 3 0 1

[4,]   1 4 0 0

 

> cbind( 2, z )

     [,1] [,2] [,3] [,4]

[1,]    2    1    1    1

[2,]    2    2    1    0

[3,]    2    3    0    1

[4,]    2    4    0    0

注:這裏用到了循環補齊(recycling)。

    這裏,cbind()把一列由1組成的向量和z組合在一起,創建了一個新矩陣。

 

    不過,請謹慎使用cbind()!和創建向量一樣,創建一個新的矩陣是很耗時間的(畢竟矩陣也屬於向量)。創建新矩陣會減低程序速度,如果在循環中重複創建矩陣,將浪費大量的時間。因此在循環中每次往矩陣中添加一行(列),最後矩陣會變成一個大矩陣,這種做法是不可取的,最好一開始就定義好一個大矩陣。這個事先定義的矩陣是空的,但是在循環過程中逐行或列進行賦值,這種做法避免了循環過程中每次進行耗時的矩陣內存分配。


處理矩陣轉置問題:

> tx<- read.table("x.txt", header=FALSE)

> ty<- t(tx)

> write.table(ty, file="D:/ty.txt", quote-F, col.name=F, row.names=F)


參考文章:

http://blog.csdn.net/thoixy/article/details/40502829

發佈了251 篇原創文章 · 獲贊 287 · 訪問量 156萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章