RShiny - иногда не отображает результат - PullRequest
0 голосов
/ 12 марта 2019

Я строю интерфейс с использованием RShiny, который отображает результаты правил ARM, созданных с помощью пакета ARULES.Это простое приложение для отображения, которое позволяет пользователю выбрать метрику (Доверие, Поддержка или Подъем) и количество отображаемых строк (5, 10, 15 или 20).Передний конец выглядит следующим образом:

enter image description here

Код 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 по той же ссылке.

1 Ответ

0 голосов
/ 15 марта 2019

Я отвечаю на свой вопрос здесь.Проблема была с pl = inspect(head(rules_sort,k))

Оказалось, что я не могу захватить вывод оператора проверки, и его можно просмотреть только на панели RStudio.

Изменил код на это:

sort_rules = function(metric1,k)
{
  rules <- readRDS("rules.RDa")
  k = as.numeric(k)
  rules_sort <- sort (rules, by=metric1, decreasing=TRUE)
# Removed Inspect in below line and just stored head of the rules as dataframe.
  pl = as(head(rules_sort,k),"data.frame")
  return(pl)
}

Это все еще не объясняет, почему иногда дисплей был виден на RShiny, но это может быть вопросом для другого дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...