R语言︱集合运算


集合运算的一般规则如下:
    union(x,y)    #求并集
    intersect(x,y)    #求交集
    setdiff(x,y)    #求属于x而不属于y的所有元素
    setequal(x,y)    #判断x与y是否相等
    a %in% y    #判断a是否为y中的元素
    choose(n, k)    #n个里面取k个的组合数
    combn(x,n)    #x中的元素每次取n个的所有组合
    combn(x,n,f)     #将这些组合用于指定函数f


> x=c(1,4,5)
> y=c(2,4,8)
> union(x,y)    #求并集
[1] 1 4 5 2 8
> intersect(x,y)    #求交集
[1] 4
> setdiff(x,y)    #求属于x而不属于y的所有元素
[1] 1 5
> setequal(x,y)    #判断x与y是否相等
[1] FALSE
> x %in% y    #判断a是否为y中的元素
[1] FALSE  TRUE FALSE

union(x,y)可以生成XY的并集,有一定的去重功能;

intersect代表交集,可以找出共有的,在文本挖掘中,词和词之间的对应关系;

setdiff代表去掉x中xy共有的地方;

x %in%y,这个管道函数很有意思,x中xy共有的为TURE,生成了一个逻辑向量,从而可以进行一些文档匹配的操作。


——————————————————————————————————————


1、情感分析中setdiff和x %in%y的用处

    功能:停用词的清理&词库之间相互匹配。stopword是停用词库,testterm是原序列。

stopword <- read.csv("F:/R语言/R语言与文本挖掘/情感分析/数据/dict/stopword.csv", header = T, sep = ",", stringsAsFactors = F)
#结果是一个和stopword等长的波尔值向量,“非”函数将布尔值反向
testterm <- testterm[!testterm$term %in% stopword,]#去除停用词

stopword <- read.csv("F:/R语言/R语言与文本挖掘/情感分析/数据/dict/stopword.csv", header = T, sep = ",", stringsAsFactors = F)
stopword <- setdiff(stopword$term,posneg$term)
testterm<- setdiff(testterm$term,stopword)
上面两端代码能实现同样的效果。
详情可见: 

R语言︱情感分析文本操作技巧汇总(打标签、词典与数据匹配等)



你可能感兴趣的:(R语言︱集合运算)