Я строю интерфейс с использованием RShiny, который отображает результаты правил ARM, созданных с помощью пакета ARULES.Это простое приложение для отображения, которое позволяет пользователю выбрать метрику (Доверие, Поддержка или Подъем) и количество отображаемых строк (5, 10, 15 или 20).Передний конец выглядит следующим образом:
Код R, идущий позади, просто сортирует по заданной метрике и отображает количество строк, выбранное во второй кнопке радиона,Проблема, с которой я сталкиваюсь, заключается в том, что, когда я выбираю «Поддержка» в первой радиопереключателе, результаты исчезают на экране RShiny, хотя записи отображаются в RStudio.Это происходит иногда, так как приложение работает отлично иногда, а иногда оно не показывает результаты, хотя результаты будут видны на моем rStudio.Что может быть причиной этого?
RShiny Код ниже:
ui <- fluidPage(
titlePanel("Movie Recommendation - ARM"),
sidebarLayout(
sidebarPanel(
helpText("Sort rules based on metric fed in. Include how many rules are needed to be displayed"),
radioButtons("var",
label = "Choose a metric",
choices = c("Confidence","Lift","Support"),
selected = "Confidence"),
radioButtons("range",
label = "Choose Number of rules to display",
choices = c(5,10,15,20),
selected = 5)
),
#mainPanel(tableOutput("rule"))
mainPanel(
tabsetPanel(type = "tabs",
tabPanel("Rules",DT::dataTableOutput("rule"))
)
)
)
)
server <- function(input, output) {
output$rule <- DT::renderDataTable({
#output$rule <- reactive({
# browser()
sw <- switch(input$var,
"Confidence" = "confidence",
"Lift" = "lift",
"Support" = "supp")
range1 = input$range
a=sort_rules(sw,range1)
})
}
# Run app ----
shinyApp(ui, server)
sort_rules (Функция) ниже
sort_rules = function(metric1,k)
{
#browser()
rules <- readRDS("rules.RDa")
print(paste0("Number of rules read:",length(rules),sep = " "))
k = as.numeric(k)
rules_sort <- sort (rules, by=metric1, decreasing=TRUE)
print(length(rules_sort))
pl = inspect(head(rules_sort,k))
return(pl)
}
Я проверил с помощью "browser ()", и он появляетсячто 'pl' в вышеприведенной функции иногда оказывается пустым.Но результаты отображаются в RStudio, а не в приложении RShiny.
Дополнительная информация, следующая функция создает rules.RDa :
readTran = function(sup,con)
{
sup = as.numeric(sup)
con = as.numeric(con)
data = readRDS("Rules_transaction.RDa")
rules = arules::apriori(data, parameter = list(supp = sup, conf = con))
subsetRules <- which(colSums(is.subset(rules, rules)) > 1) # get subset rules in vector
length(subsetRules) #> 3913
rules <- rules[-subsetRules] # remove subset rules.
saveRDS(rules,file = "rules.RDa")
}
sup и con - соответственно Support и Confidence.Я использовал 0,1 и 0,7 при создании rules.RDa из Rules_transactions.RDa.
Rules_transactions.RDa данные загружаются по приведенной ниже ссылке на github: https://github.com/vjkadekar/madeup_data_ARM (это чисто вымышленные данные, здесь не используется информация о клиенте)
и его CSV-версия загружена как my_data.csv по той же ссылке.