5

以下のように整数値 N を指定する 1 つの列を持つデータフレームまたはマトリックスがあるとします (列 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

結果は次のようになります。

[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

もう 1 つの問題は、新しくコピーされたデータのオーバーラップを計算しないように、新しく取り込まれた行をジッターする方法です。

4

1 に答える 1

7

いくつかの作成されたデータ:

y <- cbind(matrix(runif(16), 4, 4), 1:4)

ただ行う:

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

そして、「ジッター」の意味がわかりませんが、多分

z <- z + runif(z) / 1000

?

于 2013-01-03T19:38:43.880 に答える