1. 程式人生 > 實用技巧 >R語言中將矩陣轉化為行列的形式

R語言中將矩陣轉化為行列的形式

1、建立測試矩陣

> rname <- paste0("r",1:4)
> rname
[1] "r1" "r2" "r3" "r4"
> cname <- paste0("c",1:5)
> cname
[1] "c1" "c2" "c3" "c4" "c5"
> a <- matrix(1:20, nrow = 4, ncol = 5, byrow = T, 
+             dimnames = list(rname,cname))
> a
   c1 c2 c3 c4 c5
r1  1  2  3  4  5
r2  6  7
8 9 10 r3 11 12 13 14 15 r4 16 17 18 19 20

2、列行輸出

> c1 <- rep(1:nrow(a), ncol(a))
> c1
 [1] 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
> c2 <- rep(1:ncol(a),each = nrow(a))
> c2
 [1] 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5
> out1 <- data.frame(c1,c2,c3 = a[1:length(a)])
> out1
   c1 c2 c3
1 1 1 1 2 2 1 6 3 3 1 11 4 4 1 16 5 1 2 2 6 2 2 7 7 3 2 12 8 4 2 17 9 1 3 3 10 2 3 8 11 3 3 13 12 4 3 18 13 1 4 4 14 2 4 9 15 3 4 14 16 4 4 19 17 1 5 5 18 2 5 10 19 3 5 15 20 4 5 20

3、行列輸出

> c1 <- rep(1:nrow(a),each = ncol(a))
> c1
 [
1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 > c2 <- rep(1:ncol(a),nrow(a)) > c2 [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 > b <- matrix(1:length(a), nrow = ncol(a), ncol = nrow(a), + byrow = T) > b [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12 [4,] 13 14 15 16 [5,] 17 18 19 20 > out2 <- data.frame(c1, c2, c3 = a[b] ) > out2 c1 c2 c3 1 1 1 1 2 1 2 2 3 1 3 3 4 1 4 4 5 1 5 5 6 2 1 6 7 2 2 7 8 2 3 8 9 2 4 9 10 2 5 10 11 3 1 11 12 3 2 12 13 3 3 13 14 3 4 14 15 3 5 15 16 4 1 16 17 4 2 17 18 4 3 18 19 4 4 19 20 4 5 20