假设我们有一个数据帧或矩阵,其中一列指定如下的整数值N(第5列).是否有一种向量方法来重新填充对象,使每行被复制N次?
> y
[,1] [,2] [,3] [,4] [,5]
[1,] -0.02738267 0.5170621 -0.01644855 0.48830663 1
[2,] -0.30076544 1.8136359 0.02319640 -1.59649330 2
[3,] 1.73447245 0.4043638 -0.29112385 -0.25102988 3
[4,] 0.01025271 -0.4908636 0.80857300 0.08137033 4
Run Code Online (Sandbox Code Playgroud)
结果如下.
[1,] -0.02738267 0.5170621 -0.01644855 0.48830663 1
[2,] -0.30076544 1.8136359 0.02319640 -1.59649330 2
[2,] -0.30076544 1.8136359 0.02319640 -1.59649330 2
[3,] 1.73447245 0.4043638 -0.29112385 -0.25102988 3
[3,] 1.73447245 0.4043638 -0.29112385 -0.25102988 3
[3,] 1.73447245 0.4043638 -0.29112385 -0.25102988 3
[4,] 0.01025271 -0.4908636 0.80857300 0.08137033 4
[4,] 0.01025271 -0.4908636 0.80857300 0.08137033 4
[4,] 0.01025271 -0.4908636 0.80857300 0.08137033 4
[4,] 0.01025271 -0.4908636 0.80857300 0.08137033 4
Run Code Online (Sandbox Code Playgroud)
另一个问题是如何抖动新填充的行,使得新复制的数据没有计算重叠.
一些补充数据:
y <- cbind(matrix(runif(16), 4, 4), 1:4)
Run Code Online (Sandbox Code Playgroud)
做就是了:
z <- y[rep(seq_len(nrow(y)), y[,5]), ]
# [,1] [,2] [,3] [,4] [,5]
# [1,] 0.5256007 0.07467979 0.95189484 0.2887943 1
# [2,] 0.3083967 0.03518523 0.08380005 0.9168161 2
# [3,] 0.3083967 0.03518523 0.08380005 0.9168161 2
# [4,] 0.8549639 0.79452728 0.22483537 0.4452553 3
# [5,] 0.8549639 0.79452728 0.22483537 0.4452553 3
# [6,] 0.8549639 0.79452728 0.22483537 0.4452553 3
# [7,] 0.5453508 0.47633523 0.51522514 0.3936340 4
# [8,] 0.5453508 0.47633523 0.51522514 0.3936340 4
# [9,] 0.5453508 0.47633523 0.51522514 0.3936340 4
# [10,] 0.5453508 0.47633523 0.51522514 0.3936340 4
Run Code Online (Sandbox Code Playgroud)
我不确定你的"抖动"是什么意思,但也许
z <- z + runif(z) / 1000
Run Code Online (Sandbox Code Playgroud)
?