如何通过arules R中的lhs itemMatrix对象对规则进行子集化?

时间:2018-02-26 03:44:31

标签: r apriori arules

我生成的规则侧重于rhs方面的三个不同的值,类似这样(在这种情况下,fallotrayec有三个不同的值):

rules <- apriori(df, parameter=list(minlen=3,maxlen=6,supp=0.015,conf=0.6,maxtime=120),
                appearance = list(rhs=c("fallotrayec_f1", "fallotrayec_f2", "fallotrayec_f3")))

现在我可以从中提取3个规则子集,只包含每个值的更高支持值:

rules_f1 <- subset(rules, (rhs %in% "fallotrayec_f1") & support > 0.4 )
rules_f2 <- subset(rules, subset = (rhs %in% "fallotrayec_f2") & support > 0.18  )
rules_f3 <- subset(rules, subset = (rhs %in% "fallotrayec_f3") & support > 0.015  )

之后,我从这3个子集中的每个子集中得到了lhs:

lhs_f1 <- lhs(rules_f1)
lhs_f2 <- lhs(rules_f2)
lhs_f3 <- lhs(rules_f3)

最后,我想从 rules_f1 中移除所有规则,其中lhs等于 rules_f2 rules_f3 上的规则,然后我尝试:

rules_f1_new <- subset(rules_f1, !(lhs %in% lhs_f2) | !(lhs %in% lhs_f3) )

但它不断返回以下错误:

Error in validObject(x, complete = TRUE) : 
invalid class “itemMatrix” object: item labels not unique

我使用Rstudio v.1.1.423和R v.3.4.3。不幸的是,我使用的数据受到保护,但我认为可以使用其中一个演示数据集模拟上述代码。我还使用 rm.duplicates = TRUE 加载了我的数据集。提前谢谢。

0 个答案:

没有答案