を使用しています。最初の引数は、サンプリングするアイテムの数を表すスカラーとして扱われます。これは、あなたのコールが常に1つのアイテム、つまり1からサンプリングされ、ランダム性がないことを意味します。これはsample()
の動作とは異なります。例:
sample.int(c(1,0),10L,T);
## [1] 1 1 1 1 1 1 1 1 1 1
sample(c(1,0),10L,T);
## [1] 1 0 1 0 0 0 0 0 1 1
はあなたが0:1
からサンプリングする必要があることを考えると、あなたはsample()
を呼び出す必要があります。
あなたのコードから、私たちはどのループ(そうでない場合は非表示または)を実行せずにワンショットでstatparam
とcutoff
列を事前に計算することができますように、それが見えます。また、statval
ベクトルをワンショットで事前計算することができます。その後、唯一の残りの作業は乗算と加算を実行してpercentage_accuracy
列を完成させることになります。トリッキーなビットは、特定の方法で列を並べる必要があるため、正しいコードが返されています。statval
ベクトルの各100要素の要素を正しい回数繰り返す必要があります。ループ。ここで
は、私はこれを行うだろう方法は次のとおりです。
set.seed(1L);
NI <- 100L;
NS <- 100L;
NJ <- 100L;
res <- data.frame(
percentage_accuracy=c(replicate(NI,rep(sample(0:1,NS,T),NJ))),
statparam=rep(seq_len(NI),each=NS*NJ),
cutoff=rep(seq_len(NJ),NI,each=NS)
);
res$percentage_accuracy <- res$percentage_accuracy+res$cutoff*27L;
str(res);
## 'data.frame': 1000000 obs. of 3 variables:
## $ percentage_accuracy: int 27 27 28 28 27 28 28 28 28 27 ...
## $ statparam : int 1 1 1 1 1 1 1 1 1 1 ...
## $ cutoff : int 1 1 1 1 1 1 1 1 1 1 ...