我有以下数据框,我想重复N次
dc <- read.table(text = "from 1 2 3 4 5
1 0.01 0.02 0.03 0.04 0.05
2 0.06 0.07 0.08 0.09 0.10
3 0.11 0.12 0.13 0.14 0.15
4 0.16 0.17 0.18 0.19 0.20
5 0.21 0.22 0.23 0.24 0.25", header = TRUE)
n<-20
ddr <- NA
for(i in 1:n) {
ddr <- rbind(ddr, cbind(dc,i))
}
Run Code Online (Sandbox Code Playgroud)
结果,我想收到:
from X1 X2 X3 X4 X5 i
1 0.01 0.02 0.03 0.04 0.05 1
2 0.06 0.07 0.08 0.09 0.10 1
3 0.11 0.12 0.13 0.14 0.15 1
4 0.16 0.17 0.18 0.19 0.20 1
5 0.21 0.22 0.23 0.24 0.25 1
1 0.01 0.02 0.03 0.04 0.05 2
2 0.06 0.07 0.08 0.09 0.10 2
3 0.11 0.12 0.13 0.14 0.15 2
4 0.16 0.17 0.18 0.19 0.20 2
5 0.21 0.22 0.23 0.24 0.25 2
.............................
1 0.01 0.02 0.03 0.04 0.05 20
2 0.06 0.07 0.08 0.09 0.10 20
3 0.11 0.12 0.13 0.14 0.15 20
4 0.16 0.17 0.18 0.19 0.20 20
5 0.21 0.22 0.23 0.24 0.25 20
Run Code Online (Sandbox Code Playgroud)
矩阵必须重复N次,并添加重复次数.
这个问题是否有正确的解决方案(在R中执行此操作的简单功能)?在我的情况下,如果未声明ddr(ddr <-NA),则脚本不起作用.谢谢!
您可以使用rep()复制行索引,也可以创建重复编号列.
cbind(dc[rep(1:nrow(dc), n), ], i = rep(1:n, each = nrow(dc)))
Run Code Online (Sandbox Code Playgroud)
让我们分解一下:
dc[rep(1:nrow(dc), n), ]在数据帧i的行索引值中使用复制的行索引[rep(1:n, each = nrow(dc))复制一个序列,每个n值的长度nrow(dc)乘以cbind(...) 将两者组合成一个数据帧正如@HubertL在评论中指出的那样,这可以进一步简化为
cbind(dc, i = rep(1:n, each = nrow(dc)))
Run Code Online (Sandbox Code Playgroud)
感谢回收的魔力.请给他投票.
| 归档时间: |
|
| 查看次数: |
2417 次 |
| 最近记录: |