を繰り返す:私たちはこのようになります配列を取得したい反復配列
1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4
それを行うための最も簡単な方法は何ですか?このよう
を繰り返す:私たちはこのようになります配列を取得したい反復配列
1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4
それを行うための最も簡単な方法は何ですか?このよう
あなたは、単一のrep
コールでそれを行うことができます(あなたがベクトルではなく、配列を意味すると仮定した場合)。 each
およびtimes
のパラメータは、each
が最初に実行されて順番に評価されます。
rep(1:4, times=3, each=3)
#[1] 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4
これは私の見解では受け入れられた答えになるはずです – Andrie
:
rep(sapply(1:4, function(x) {rep(x, 3)}), 3)
担当者(X、N)は、x N回繰り返すベクトルを返します。 spplyは与えられた関数をベクトル1:4の各要素に別々に適用し、各要素を3回連続して繰り返します。
Dieterの答えを見てください。「each」のパラメータは、サプリーへの呼び出しよりもはるかに良いことをします。 – Dason
あるいは、単純
rep(rep(1:4,each=3),3)
aperm
での配列操作を使用する方法があります。考え方は、値を含む配列を作成することです。 aperm
を使用して目的の出力と一致するように並べ替え、c
で配列を展開します。
c(aperm(array(1:4, dim=c(4,3,3)), c(2, 1, 3)))
[1] 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4
forループについて考えましたが、単純な方法ではありませんか? –