[英]How to remove a single non unique element from a list or vector in r
我正在尋找的是刪除單個非唯一元素的有效方法。
說我有向量:
c(1,1,1,2,2,3,3,4)
我想刪除:
c(1,2)
這樣的結果是
c(1,1,2,3,3,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
僅返回其第一個參數在第二個參數中(第一個)匹配的位置的向量。
編輯:作為@Ananda Mahto指出,如果所有元素這僅適用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.