簡體   English   中英

如何在 R 中反轉子集?

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

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