2016-10-23 4 views
3

RのベクトルからAN要素だけを削除するにはどうすればよいですか?たとえば、与えられた条件を満たすベクトルから1つの要素をランダムに削除する方法はありますか?

x = c(1, 2, 0, 3, 1, 4, 2, 0) 

ランダムにゼロのうちの1つだけを削除したいとします。その後

x = c(1, 2, 0, 3, 1, 4, 2) 

または

x = c(1, 2, 3, 1, 4, 2, 0) 
+0

なぜ人々が議決をかけているのかわかりませんが、この質問は明らかです。 – smci

答えて

3

ランダムに削除されるそのゼロを選択するには、xに少なくとも1つのゼロがある場合は明らかに上記のみ動作します

x[-sample(which(x == 0), 1)] 

を使用することができます。安全対策として、if()ステートメントを使用することができます。

if(length(w <- which(x == 0))) x[-sample(w, 1)] else x 
# [1] 1 2 0 3 1 4 2 
if(length(w <- which(x == 0))) x[-sample(w, 1)] else x 
# [1] 1 2 3 1 4 2 0 

は何も存在しない11、の検索、我々は全体のベクトルxを取り戻します。

if(length(w <- which(x == 11))) x[-sample(w, 1)] else x 
# [1] 1 2 0 3 1 4 2 0 
関連する問題