首页 文章

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

提问于
浏览
-1

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

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

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

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

2 回答

  • 2

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

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

    此外, match 也是如此

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

    你可以使用 match . 这将查找返回其索引的指定值的第一个匹配项

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

相关问题