[英]How to inverse subset in R?
我正在嘗試在 R 中創建一個完全包含的組的非重疊子集。 第一個子集包含來自完全包容組的元素對。 另一個子集應該是完全包含組中的所有元素,但不是第一個子集中的元素。
poplength <- 10
samples <- 7
numpair <- 2
totallyinclusivegroup <- sample(1:poplength, samples)
Subset1 <- sample(totallyinclusivegroup, size = numpair*2)
我不知道如何獲得包含“totallyinclusivegroup”中的所有內容但不包含在子集 1 中的“子集 2”。我嘗試使用“-”運算符,但沒有成功。 例如,
Subset2 <- totallyinclusivegroup[-Subset1]
不起作用,並且包含來自 Subset1 的元素。 任何建議/幫助表示贊賞。
嘗試:
#Code
Subset2 <- totallyinclusivegroup[-which(totallyinclusivegroup%in% Subset1 )]
Output:
totallyinclusivegroup
[1] 8 5 10 2 9 1 3
Subset1
[1] 5 10 3 9
Subset2
[1] 8 2 1
我們可以用!
在來自%in%
的邏輯向量上,因此 TRUE -> FALSE 反之亦然
out <- totallyinclusivegroup[!totallyinclusivegroup %in% Subset1]
-輸出
Subset1
#[1] 2 6 9 7
totallyinclusivegroup
#[1] 3 2 6 1 9 7 8
out
#[1] 3 1 8
或者更簡單的選擇是setdiff
setdiff(totallyinclusivegroup, Subset1)
#[1] 3 1 8
如果有重復的元素,最好使用vsetdiff
中的vecsets
library(vecsets)
vsetdiff(totallyinclusivegroup, Subset1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.