2016-10-23 3 views
3

Как удалить только элемент AN из вектора в R? Например,Как я могу случайным образом удалить один элемент из вектора, который удовлетворяет заданному условию?

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

Я хочу удалить только один из нулей, случайным образом. Тогда

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

или

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

Я не понимаю, почему люди голосуют за закрытием, этот вопрос ясен. – smci

ответ

3

Чтобы случайно выбрать ноль получает удален, вы можете использовать

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

Очевидно, что выше, будет работать, только если есть по крайней мере один нуль в x. В качестве гарантии вы можете использовать заявление 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 
Смежные вопросы