假设我有一个大的整数向量,其中一个整数可以在向量中多次出现。我不知道向量中值的顺序。考虑下面的代码:我有 vector ,我想删除一个1来获取 newVector 。由于在此示例之外未知向量内的顺序,因此我不能简单地使用 vector [-1] 。
vector<-c(1,1,2,2,3)
newVector<-c(1,2,2,3)
一些背景:我迭代地从矢量中选取两个值(使用 sample ),然后想要删除我从矢量中选取的值。
当然我可以循环遍历向量,直到我找到第一次出现的值我希望删除并使用索引删除它,但是,这非常耗时。我发现的所有其他结果最终都删除了所有出现的值,这是我不想要的。
答案 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