簡體   English   中英

如何從R中的列表或向量中刪除單個非唯一元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM