2016-07-24 7 views
0

NAの値をRの確率ベクトルに取り除く良い方法はありますか?私はいくつかのサンプリングをしていますが、確率ベクトルにはNAの値があることがあります。これは、母集団に特定の値が出現しないためです。以下のコードは、問題を示しています確率ベクトルのNAsを置換する

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は2つのだけの要素を持っているので、あなたのコードが失敗しています。 probs[3]はNAを返します。また、probs[1:3]c(probs[1],probs[2],probs[3])のより簡潔な因数分解であることにも注意してください。

+0

1Lとは何ですか? more characters .......... – user21478

+0

'1L'は整数リテラルですが、' 1'はダブルリテラルです。ほとんどの場合、これらの2つのストレージタイプを区別することは不可欠ではありませんが、すべてのケースで適切なタイプを使用することが望ましい場合は、正確性、一貫性、パフォーマンス上のメリット(すなわち、この場合、 'sample()'の 'size'引数は整数でなければなりません。それは数値リテラルにもう一つの文字を追加するだけなので、それは大きな問題ではないと私は思います。 – bgoldst

関連する問題