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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM