R語言中的集合操作

R語言中的集合運算操作,在很多時候可以省掉for循環帶來的開銷成本。我們知道在集合對元素的操作有並,交,補,取餘等,下面直接代碼介紹:

#集合A
> A<-1:10
> A
 [1]  1  2  3  4  5  6  7  8  9 10
> #集合B
> B<-seq(5,15,2)
> B
[1]  5  7  9 11 13 15
>集合C
> C<-1:5
> C
[1] 1 2 3 4 5

# 求A和B的並集
> union(A,B)  
 [1]  1  2  3  4  5  6  7  8  9 10 11 13 15

#求A和B的交集
> intersect(A,B) 
[1] 5 7 9

> setdiff(A,B)  #求A-B 即屬於A但不屬於B的元素
[1]  1  2  3  4  6  8 10

> setequal(A,B)  #檢驗集合是否相同
[1] FALSE

> is.element(12,C)  #檢驗12是否屬於集合C
[1] FALSE

> all(C%in%A)  #檢驗C是否是A的子集
[1] TRUE

附錄:

union(x, y) #集合的並
intersect(x, y) #集合的交
setdiff(x, y) # x-y
setequal(x, y) # 集合x與y是否相等


> set.seed(2015) 

> (x <- c(sort(sample(1:20, 9)), NA)) 
 [1] 1 2 3 6 7 8 16 18 20 NA 

> (y <- c(sort(sample(3:23, 7)), NA))
  [1] 3 9 10 13 14 16 17 NA 

> union(x, y) 
 [1] 1 2 3 6 7 8 16 18 20 NA 9 10 13 14 17 

> intersect(x, y) 
 [1] 3 16 NA 

> setdiff(x, y) 
 [1] 1 2 6 7 8 18 20 

> setdiff(y, x) 
 [1] 9 10 13 14 17 

> setequal(x, y)
  [1] FALSE 

> is.element(x, y) # length 10 
 [1] FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE 

> is.element(y, x) # length 8 
 [1] TRUE FALSE FALSE FALSE FALSE TRUE FALSE TRUE`
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章