我正在寻找的是一种删除单个非唯一元素的有效方法。
说我有矢量:
c(1,1,1,2,2,3,3,4)
我想删除:
c(1,2)
这样结果就是
c(1,1,2,3,3,4)
我确定它很简单,但我不知所措。发出声音!
答案 0 :(得分:4)
您正在寻找的功能是match
。这是代码
a <- c(1,1,1,2,2,3,3,4)
b <- c(1,2)
a[-match(b, a)]
### [1] 1 1 2 3 3 4
这是有效的,因为match
仅会返回第二个参数中(第一个)匹配位置的向量。
b
中的所有元素都在a
中时才有效。对于更通用的公式,请使用以下函数
element_rm <- function(a, b){
if (any(b%in%a)) return(a[-match(b[b%in%a], a)])
else return(a)
}
a <- c(1,1,1,2,2,3,3,4)
element_rm(a, c(1,2))
## [1] 1 1 2 3 3 4
element_rm(a, c(2,5))
## [1] 1 1 1 2 3 3 4
element_rm(a, 5)
## [1] 1 1 1 2 2 3 3 4
element_rm(a, c(4,4))
## [1] 1 1 1 2 2 3 3