二項確率式を使用して、行列にいくつかの値を入れています。問題は、マトリックスに保持する必要があるいくつかの NA 値があることですが、NA が入力されると rbinom() がエラーを返します。
私のアルゴリズムは次のもので構成されています。
- (1) 1 つの列の値のマトリックスから始めます。
- (2) その行列の値を 2 倍にします。
- (3) 0.5 の二項確率からランダムな値を選択します。
- ...不要なものがいくつかあります
再現可能な例を次に示します。
set.seed(10)
xn <- matrix(c(NA, 100, 100, 100, 100, NA, NA, 100, 100, NA), byrow=TRUE, ncol=2)
dup <- xn * 2
z <- matrix(rbinom(n=rep(1,length(dup)), size = as.vector(dup), prob = 0.5), nrow = nrow(dup))
Warning message:
In rbinom(n = rep(1, length(dup)), size = as.vector(dup), prob = 0.5) :
NAs produced
実際の値を持つマトリックスの値のみを選択することを考えました。
set.seed(6)
xn_bin <- rbinom(n=rep(1,length(dup[-which(is.na(dup))])), size = as.vector(dup[-which(is.na(dup))]),prob = 0.5)
xn_bin から結果を取得し、rbinom() に入力された dup 値と同じ位置にそれらを新しいマトリックスに戻す必要があるため、マトリックスを元に戻す方法がわかりません。
それが意味をなさない場合。xn_bin は次の値を返します: xn_bin [1] 101 115 112 98 103 103
dup は以下を提供します:
dup
[,1] [,2]
[1,] NA 200
[2,] 200 200
[3,] 200 NA
[4,] NA 200
[5,] 200 NA
最終的な行列に xn_bin からの値と xn からの NA 値を持たせたい:
[,1] [,2]
[1,] NA 101
[2,] 115 112
[3,] 98 NA
[4,] NA 103
[5,] 103 NA
これを効果的に行う方法はありますか?