правила, изолирующие левые и правые

Итак, вот пример:

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 с двумя столбцами, один из которых называется lhs, а другой - rhs, где я сохранил значения lhs и rhs моих правил следующим образом:

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

Я бы поклялся, что однажды сделал это, начиная с a<-as.data.table(inspect(rules)) в Windows, но на моем Mac это не работает ... Что вы предлагаете?


person Felipe    schedule 28.02.2016    source источник
comment
Вы можете получить доступ к отдельным столбцам? (inspect(rules)$lhs)?   -  person Heroka    schedule 28.02.2016


Ответы (2)


Дано

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") вместо 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
person lukeA    schedule 28.02.2016

Именно так я и намеревался это сделать...

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 = ""))
person Michael Hahsler    schedule 29.02.2016
comment
Это не работает, когда у меня есть результат Large rules (652,5 КБ) из apriori(). Функция write в arules выполнена успешно, но я не могу разделить LHS и RHS. Я даже пробовал DATAFRAME(rules, separate = TRUE), который выдает ошибку Error in data.frame(LHS = factor(antes, levels = unique(antes)), RHS = factor(conseqs, : arguments imply differing number of rows: 1, 0. Возможно ли, что объект Large нарушает доступ lhs() и т. д.? - person Fuhrmanator; 05.12.2018
comment
Вам нужно опубликовать полный пример, который воспроизводит проблему. - person Michael Hahsler; 06.12.2018