如何编程枚举R中apriori的RHS中的所有唯一值

如何编程枚举R中apriori的RHS中的所有唯一值,r,subset,apriori,R,Subset,Apriori,apriori返回规则列表,您可以将其子集以查找特定规则 但是,子集要求您已经知道项目名称。例如,subset(规则,subset=rhs%pin%“soap”)。你知道你在找“肥皂”。但有一次我不知道这个名字,我想通过编程来了解 通过编程查找所生成规则的rhs上列出的所有唯一项的过程是什么 类似于unique(rhs)的东西,它会给我一个向量中rhs上所有项目的列表,这样我就可以对它们进行枚举,并对它们使用子集 编辑: 下面是由rules生成的规则的绘图,类似这样的东西 library(aru

apriori
返回规则列表,您可以将其子集以查找特定规则

但是,子集要求您已经知道项目名称。例如,
subset(规则,subset=rhs%pin%“soap”)
。你知道你在找“肥皂”。但有一次我不知道这个名字,我想通过编程来了解

通过编程查找所生成规则的rhs上列出的所有唯一项的过程是什么

类似于
unique(rhs)
的东西,它会给我一个向量中rhs上所有项目的列表,这样我就可以对它们进行枚举,并对它们使用
子集

编辑: 下面是由
rules生成的规则的绘图,类似这样的东西

library(arules)

data("Adult")
rules <- apriori(Adult, 
                 parameter = list(supp = 0.5, conf = 0.9,
                                  target = "rules"))

rhs.unique <- unique(rules@rhs@itemInfo$labels[rules@rhs@data@i])
print(rhs.unique)
[1] "sex=Male"                       "capital-gain=High"             
[3] "native-country=Trinadad&Tobago" "race=Other"     
库(阿鲁莱斯)
数据(“成人”)

规则只是@hrbrmstr答案的一个小扩展。这就是你的想法吗

library(arules)
data("Adult")
rules <- apriori(Adult, 
                 parameter = list(supp = 0.5, conf = 0.9,
                                  target = "rules"))
result <- data.frame(do.call(rbind,strsplit(rules@rhs@itemInfo$labels,"=")))
colnames(result) <- c("LHS","RHS")
head(result,10)
#          LHS              RHS
# 1        age            Young
# 2        age      Middle-aged
# 3        age           Senior
# 4        age              Old
# 5  workclass      Federal-gov
# 6  workclass        Local-gov
# 7  workclass     Never-worked
# 8  workclass          Private
# 9  workclass     Self-emp-inc
# 10 workclass Self-emp-not-inc
库(阿鲁莱斯)
数据(“成人”)

规则提取唯一规则集的更简洁的方法是在
arules
包中使用
inspect()
函数。结果是一个数据帧,每一行代表一个唯一的规则

library(arules)

data("Adult")
rules <- apriori(Adult, 
                 parameter = list(supp = 0.5, conf = 0.9,
                                  target = "rules"))

result = inspect(unique(rules@rhs))
库(阿鲁莱斯)
数据(“成人”)

规则您可以通过使用存储在RHS数据项中的RHS标签索引对RHS项目标签进行子集设置来获得唯一RHS元素的字符向量。如果
rules
是一组先验规则,则以下行起作用:

唯一(rules@rhs@itemInfo$标签[rules@rhs@data@i+1])


请注意
rules@rules@rhs@data@i
是标签索引,其范围从0到小于可能标签数量的1。因此,我们在使用这些索引时需要添加1,因为
rules@rhs@itemInfo$labels

您使用的软件包不在base R中吗?请告诉我们这是什么。
apriori(…)
arules
包中。JLHoward是对的-它来自apriori。还对问题进行了编辑,以澄清RHS项目应仅来自apriori生成的规则,而不是所有规则。这真的回答了问题吗?谢谢-但这是打印“所有”可能的标签,而不仅仅是规则中的标签。例如,在您的示例中,
规则
RHS只包含构成
资本收益、种族、本国
的条目,但包含
rules@rhs@itemInfo$labels
包含所有内容,如年龄、工人阶级、教育程度等。如何仅获取规则中的RHS项目,而不是所有项目?谢谢@jlhoward,但它正在打印“所有”标签,而不仅仅是生成的“规则”RHS中的标签。如果您查看结果,它会显示
年龄、工人阶级等,这些不在生成规则的RHS中。只需要RHS规则项-如何获取?
library(arules)

data("Adult")
rules <- apriori(Adult, 
                 parameter = list(supp = 0.5, conf = 0.9,
                                  target = "rules"))

result = inspect(unique(rules@rhs))