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

 

posted @ 2020-12-20 12:35  小鲨鱼2018  阅读(2989)  评论(0编辑  收藏  举报