R通过改变支持和项目外观的关联规则挖掘(arules)循环

R loop through association rule mining (arules) with changing supports and item appearances

这里对 R 相当陌生。我正在寻找 R 中特定项目的关联规则,但我想改变每个项目对这些规则的最低支持目标(即交易中 项目 总频率的 10%列表)。每个项目都有不同的交易量,所以我相信改变支持是有价值的。

我使用 Excel 在单独的电子表格中计算了每个项目的支持目标。

我可以手动编写 arules 代码并手动输入支持的最小值和项目外观,但过程很慢,尤其是有很多不同的项目。

例如

arules <- apriori(trans, parameter = list(sup = 0.001, conf = 0.25,target="rules"), 
    appearance=list(rhs= c("Apples")))
arules2 <- apriori(trans, parameter = list(sup = 0.002, conf = 0.25,target="rules"), 
    appearance=list(rhs= c("Oranges")))
combined <- c(arules,arules2)

我如何使用 R 中的 for 循环执行此操作,该循环将在特定支持最小值下计算每个指定项目的规则,并在每次循环运行时将这些生成的规则保存到新变量?我打算稍后根据它们的类型对这些规则进行分组。

试过类似这样循环了太多次的东西。我也想不出一种方法将每个循环保存到一个新变量(即 arules1、arules2、arules3....)

min_supp <- c(0.001,0.002,0.003)
names <- c("Apples","Oranges","Grape")

for (inames in names) {
    for (supports in min_supp) {
        apriori(trans, parameter = list(sup = supports, conf = 0.25,target="rules"),
        appearance=list(rhs= inames))
        }}

提前致谢!

考虑 Mapmapply 的简化包装器),它可以通过相同长度的向量逐元素迭代 m 多个 apply 方法。此外,Map 将输出返回的项目列表,可以用 setNames 命名。列表始终是首选,因为您可以避免单独的、结构相似的对象充斥全局环境。

min_supp <- c(0.001,0.002,0.003)
names <- c("Apples","Oranges","Grape")

arules_fun <- function(n, s) apriori(trans, parameter = list(sup = s, conf = 0.25, target="rules"), 
                                     appearance=list(rhs= n))

# PROCESS FUNCTION ELEMENTWISE 
arules_list <- Map(arules_fun, names, min_supp)    
# NAME LIST ITEMS
arules_list <- setNames(arules_list, paste0("arules", 1:length(arules_list)))

arules_list$arules1
arules_list$arules2
arules_list$arules3
...