2016-02-28 49 views
0

因此,這裏的例子:arules隔離LHS和RHS

library(arules) 
data(Adult) 
rules <- apriori(Adult,parameter = list(maxlen = 2,minlen=2)) 
inspect(head(rules,3)) 


lhs       rhs        support confidence  lift 
1 {relationship=Unmarried} => {capital-loss=None}   0.1019819 0.9719024 1.019537 
2 {occupation=Sales}  => {race=White}     0.1005282 0.8920785 1.043314 
3 {occupation=Sales}  => {native-country=United-States} 0.1039679 0.9226017 1.028055 

我想創建一個data.table 2列,一個叫LHS和其他RHS,我已經存儲了LHS和RHS的值我的規則是這樣的:

lhs      rhs 
relationship=Unmarried capital-loss=None 
occupation=Sales   race=White 
occupation=Sales   native-country=United-States 

我發誓,我沒有一次在Windows上,但在我的Mac是不工作開始a<-as.data.table(inspect(rules)) ...你有什麼建議?

+0

你是否能夠訪問個別列? ('檢查(規則)$ lhs')? – Heroka

回答

1

鑑於

library(arules) 
library(data.table) 
data(Adult) 
rules <- apriori(Adult,parameter = list(maxlen = 2,minlen=2)) 
r <- head(rules,3) 

如果as.data.table(inspect(r))不起作用(它在我的機器,Win7的X64,R 3.2.2 & packageVersion("arules") beeing 1.3.0上),那麼也許嘗試

f <- function(x, fun) unlist(as(fun(x), "list")) 
(dt <- data.table(lhs=f(r, lhs), rhs=f(r, rhs))) 
#      lhs       rhs 
# 1: relationship=Unmarried   capital-loss=None 
# 2:  occupation=Sales     race=White 
# 3:  occupation=Sales native-country=United-States 
1

這是我打算這樣做的方式...

library(arules) 
data(Adult) 
rules <- apriori(Adult,parameter = list(maxlen = 2,minlen=2)) 

data.frame(lhs = labels(lhs(rules), setStart = "", setEnd = ""), 
      rhs = labels(rhs(rules), setStart = "", setEnd = ""))