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

3
我该如何在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)

我不明白为什么人们要投票关闭,这个问题很清晰。 - smci
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接