あなたの最初の例はうまくいきません。
for (i in 1:100){ if (runif<0.01){b<-sample(1:2,1)} else {b<-NA}}
2 番目の部分を機能させるには、1 回実行するのではなく、複数回sample
実行するだけi
です。
no_options<-2
prob_rand<-0.5 # 0.01 is too low to verify that it is working.
ifelse(runif(100,0,1)<prob_rand, sample(1:no_options,100,replace=TRUE),NA)
# [1] NA NA NA NA NA 2 1 NA NA NA NA 1 1 NA 1 2 2 2 1 NA 1 NA NA NA 2
# [26] NA 1 NA 1 2 NA NA NA 2 NA 2 1 NA 2 2 2 NA NA 1 1 1 1 NA 2 NA
# [51] 2 NA NA 2 1 1 1 2 NA 1 NA 1 NA 1 1 1 NA NA NA NA 1 NA 2 NA NA
# [76] 1 1 NA 2 NA NA NA NA 2 NA 2 NA 2 2 1 1 1 NA 1 NA NA 2 NA NA 1