如何从满足给定条件的向量中随机删除一个元素?

时间:2016-10-23 02:28:44

标签: r vector

如何从R中的向量中仅删除AN元素?例如,

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)

1 个答案:

答案 0 :(得分: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