私はこれに遭遇し続けており、簡単な回避策があるかどうか疑問に思っています. 状況によっては、マトリックスをサブセット化することを考える方がより論理的だと思います
N <- 12
N.NA <- 6
dat <- data.frame(V1=runif(N),V2=runif(N))
sel.mat <- matrix(c(sample(seq(N),N.NA),sample(ncol(dat),N.NA,replace=TRUE)),ncol=2)
これは選択には機能しますが、置換には機能しません。
> dat[sel.mat]
[1] 0.2582569 0.8455966 0.8828083 0.5384263 0.9574810 0.5623158
> dat[sel.mat] <- NA
Error in `[<-.data.frame`(`*tmp*`, sel.mat, value = NA) :
only logical matrix subscripts are allowed in replacement
エラーメッセージには理由があることを認識しています(同じ要素を指す複数の置換がある場合、何をすべきかわかりません)が、Rがベクトルで整数置換を許可することを止めません(例:dat$V1[c(2,3)] <- NA
)。
整数行列による置換を許可する便利な方法はありますか?