使用 arules 的函数打包问题

Posted

技术标签:

【中文标题】使用 arules 的函数打包问题【英文标题】:packaging issues with a function that uses arules 【发布时间】:2016-03-07 17:54:46 【问题描述】:

我正在使用 R 并尝试将一堆函数组装到一个包中。其中一个函数使用包 arules 从数据集中挖掘规则,对它们进行子集化并获取其他兴趣度量。

我对它们的子集有问题。

rules <- apriori(trainingTrans, parameter = list(support = 0.005, confidence = 0.0, maxlen = 6)  
rulesCases <- subset(rules, subset = rhs %in% "event")

只要我加载了 arules,这些函数就可以在包外工作,但无论我是否将 arules 设置为 Depends、Imports 或让函数使用 library(arules )。显示的错误是“匹配”需要向量参数。我认为 Arules 有自己的 match 版本来解决这个问题,我尝试了 arules::match(rhs,"event"),但我仍然遇到同样的问题。

【问题讨论】:

【参考方案1】:

问题是它没有找到正确的 %in% 版本。这可能有效:

rulesCases <- subset(rules, subset = arules::"%in%"(rhs, "event"))

如果您导入arules,这应该是没有必要的,但似乎发生了一些奇怪的事情。我希望这将在未来的 arules 版本中得到解决。

【讨论】:

还是没有运气。 :( 当我查看文档时,匹配是另一种方法来正确“%in%”,这就是为什么我尝试指定包 first-arules::match (rhs,"event"),但我只是没有祝你好运。我用你的线路试了一下,但还是不行:(。我很难过。 这很奇怪!你安装了什么版本的规则(加载你的包后调用 sessionInfo())。 我正在使用 arules_1.1-9 您可能应该考虑更新到当前版本 (1.3-1)。您可能还需要更新 R。【参考方案2】:

我的包裹中遇到了同样的问题并且能够修复它:

正如 Michael Hahsler 所注意到的,语法 subset(rules, subset = arules::"%in%"(rhs, "event")) 强制在包中使用正确版本的 %in%

rhsrules 不再相关,因此需要使用rules@rhs 重新精确化

所以正确的语法应该是subset(rules, subset = arules::"%in%"(rules@rhs, "event"))

它为我的包做这项工作,描述文件包含

LinkingTo: arules
Imports: arules

并且不再使用library(arules)

【讨论】:

以上是关于使用 arules 的函数打包问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用arules来识别top n推荐项目及其规则?

不能使用R语言的arules的数据集怎么办

R中使用先验函数的关联规则

在 R 中使用 Arules 生成 2 项集规则

使用 arules/apriori 过滤 rhs 不起作用

如何仅获取 arules 中特定列的 LHS 和 RHS 项目?