5

親族 n00b からの質問: ベクトルを長さの異なる 3 つのベクトルに分割し、各ベクトルにランダムに値を割り当てたいと思います。たとえば、以下の長さ 12 のベクトルを長さ 2、3、および 7 のベクトルに分割したいと思います。

これを使用して、3 つの等しいサイズのベクトルを取得できます。

test<-1:12
split(test,sample(1:3))

長さ 4 の 3 つのベクトルではなく、テストを 2、3、および 7 のベクトルに分割する方法について何か提案はありますか?

4

4 に答える 4

12

rep各グループのインデックスを作成し、それに基づいて分割するために使用できます

split(1:12, rep(1:3, c(2, 3, 7)))

最初のベクトルの最初の 2 項目、2 番目のベクトルの次の 3 項目だけではなく、項目をランダムに割り当てたい場合は、呼び出しを追加するだけです。sample

split(1:12, sample(rep(1:3, c(2, 3, 7))))

特定の長さ (2,3,7) を念頭に置いていないが、毎回同じ長さのベクトルにしたくない場合は、SimonO101 の答えが最適です。

于 2013-08-23T15:37:20.047 に答える
0

補助ベクトルを使用して、データを分割する方法をフォーマットできます。例:

Data <- c(1,2,3,4,5,6)

Format <- c("X","Y","X","Y","Z,"Z")

output <- split(Data,Format)

出力を生成します:

$X
[1] 1 3

$Y
[1] 2 4

$Z
[1] 5 6
于 2013-08-23T15:44:21.913 に答える