2016-07-24 95 views
0

在R中概率向量中排除NA值的一種好方法是什麼?我正在做一些抽樣,有時在概率向量中有值,因爲總體中沒有特定值的出現。下面的代碼說明了問題:替換概率向量中的NA

population <- c("A", "B", "B") 
probs <- prop.table(table(population)) 
action <- c("A", "C", "D") 
test <- sample(action,1,prob=c(probs[1], probs[2], probs[3])) 

回答

0

這就像你要指定使用​​相應元素的概率action每個元素的概率在我看來。您可以通過文字索引probs載體,具體做到這一點,索引probs與​​:

set.seed(1L); 
population <- c('A','B','B'); 
probs <- prop.table(table(population)); 
action <- c('A','C','D'); 
test <- sample(action,1L,prob=probs[population]); 
test; 
## [1] "C" 

您的代碼失敗,因爲probs只有兩個元素; probs[3]返回NA。還請注意probs[1:3]c(probs[1],probs[2],probs[3])的更簡潔的因子分解。

+0

什麼是1L?更多字符.......... – user21478

+0

'1L'是一個整數字面值,而'1'是雙字面值。在大多數情況下區分這兩種存儲類型並不是必需的,但我希望在所有情況下都使用適當的類型,我認爲這是正確性,一致性和可能的​​性能優勢(即減少對強制的需求)。在這種情況下,sample()的'size'參數應該是一個整數。它只爲數字文字增加了一個字符,所以我認爲這不是什麼大問題。 – bgoldst