0
我正在通過二項式概率表達式在矩陣中添加一些值。問題是我有一些需要保留在矩陣中的NA值,但是當輸入NA時,rbinom()會返回一個錯誤。R,rbinom(),NA和矩陣:如何忽略NA並保留它們
我的算法由以下內容組成:
- (1)的值在一列的矩陣開始。
- (2)在該矩陣中加倍 值。 (3)從二項式中選擇一個隨機值,其概率爲0.5。
- ...做更多的事情是uneccessary
這裏是一個重複的例子。
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結果,並把它們放回相同的位置在一個新的矩陣作爲DUP值位於輸入到rbinom() 。
如果這沒有任何意義。 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值和NA從XN值:
[,1] [,2]
[1,] NA 101
[2,] 115 112
[3,] 98 NA
[4,] NA 103
[5,] 103 NA
任何想法如何有效地做到這一點?
是否可以按行排列?每列代表人口的增長,而每行代表不同人口的重複。因此,如果按列排序,那麼這些值將在不同的羣體之間混合起來。 – Kevin
另外,什麼是z定義爲?在我的例子中,它沒有被定義爲產生錯誤。 – Kevin
第一個問題:處理順序和R矩陣是沿着列的,所以我相信我的排序是正確的,你的錯誤。第二個問題:你定義了'z'。 ???我只是把它的副本放在正確位置的值的佔位符。 –