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 @   小鲨鱼2018  阅读(3064)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示