从向量中删除单个值,留下其他出现的相同值

时间:2018-04-19 07:31:35

标签: r vector

假设我有一个大的整数向量,其中一个整数可以在向量中多次出现。我不知道向量中值的顺序。考虑下面的代码:我有 vector ,我想删除一个1来获取 newVector 。由于在此示例之外未知向量内的顺序,因此我不能简单地使用 vector [-1]

vector<-c(1,1,2,2,3)
newVector<-c(1,2,2,3)

一些背景:我迭代地从矢量中选取两个值(使用 sample ),然后想要删除我从矢量中选取的值。

当然我可以循环遍历向量,直到我找到第一次出现的值我希望删除并使用索引删除它,但是,这非常耗时。我发现的所有其他结果最终都删除了所有出现的值,这是我不想要的。

2 个答案:

答案 0 :(得分:2)

我认为这会有效,因为which.max会返回第一个匹配的索引,然后我们可以使用否定子集删除它们。

vector[-which.max(vector == 1)]
#[1] 1 2 2 3

此外,match执行相同的操作

vector[-match(1, vector)]
#[1] 1 2 2 3

答案 1 :(得分:1)

您可以使用match。这将找到第一次出现的指定值,返回其索引

vector<-c(1,1,2,2,3)
vector[-match(1, vector)]

# [1] 1 2 2 3