r - 如何将矩阵中的所有组合填充到两列
问题描述
我正在这样做:
data.2<-
rbind(
cbind(data[,1], data[,2]),
cbind(data[,1], data[,3]),
cbind(data[,1], data[,4]),
cbind(data[,1], data[,5]),
cbind(data[,1], data[,6]),
cbind(data[,1], data[,7]),
cbind(data[,1], data[,8]),
cbind(data[,1], data[,9]),
cbind(data[,1], data[,10]),
cbind(data[,1], data[,11]))
如果我有更多列并且我不想手动 cbind 每个组合,我该怎么办?
数据例如
[,1] [,2] [,3] [,4]
[1,] 1 4 2 5
[2,] 2 5 6 7
[3,] 3 6 8 9
and should look like
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
[4,] 1 2
[5,] 2 6
[6,] 3 8
[7,] 1 5
[8,] 2 7
[9,] 3 9
我有数百列和行,我永远不知道有多少!
解决方案
由于第一列总是重复,您可以像这样使用回收:
data <- matrix(1:33, 3, 11)
data.2 <- cbind(data[, 1], as.numeric(data[, -1]))
结果
> data.2
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
[4,] 1 7
[5,] 2 8
[6,] 3 9
[7,] 1 10
[8,] 2 11
[9,] 3 12
[10,] 1 13
[11,] 2 14
[12,] 3 15
[13,] 1 16
[14,] 2 17
[15,] 3 18
[16,] 1 19
[17,] 2 20
[18,] 3 21
[19,] 1 22
[20,] 2 23
[21,] 3 24
[22,] 1 25
[23,] 2 26
[24,] 3 27
[25,] 1 28
[26,] 2 29
[27,] 3 30
[28,] 1 31
[29,] 2 32
[30,] 3 33
推荐阅读
- javascript - 具有部分 ID 信息的目标元素
- swiftui - 是否可以以仅将其下方的项目向下推而不将其上方的项目向上推的方式填充 VStack 中的项目?
- android - InterlockedCompareExchange Android 崩溃问题
- java - 在recyclerView中获取json数据
- javascript - 如何在 iOS 13 上的 Safari 中检测设备名称而不显示正确的用户代理?
- javascript - 为什么这有效(JavaScript)?
- java - 使用不可变地图保留排序?
- java - isMultipartContent(request) 不起作用。我不知道发生了什么,它应该返回 true 但它返回 false
- node.js - 与外部 postgres 数据库的连接超时
- aws-lambda - 针对同一 Github 存储库中不同项目的 AWS CI/CD 流程