【发布时间】:2019-08-02 20:20:44
【问题描述】:
我正在使用 RShiny 构建一个界面,该界面显示通过 ARULES 包创建的 ARM 规则的结果。它是一个简单的显示应用程序,允许用户选择指标(信心或支持或提升)和要显示的行数(5 或 10 或 15 或 20)。前端是这样的:
后面运行的 R 代码仅按给定的指标排序,并显示在第二个单选按钮中选择的行数。我面临的问题是,当我在第一个单选按钮中选择“支持”时,尽管记录显示在 RStudio 中,但结果在 RShiny 屏幕上变为空白。有时会发生这种情况,因为应用程序有时可以完美运行,尽管结果将在我的 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 App 中。
附加信息,以下函数创建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。在从 Rules_transactions.RDa 创建 rules.RDa 时,我使用了 0.1 和 0.7。
Rules_transactions.RDa 数据上传到以下给定的 github 链接: https://github.com/vjkadekar/madeup_data_ARM(纯属捏造数据,此处未使用客户信息)
其 csv 版本作为 my_data.csv 上传到同一链接。
【问题讨论】:
-
可以分享
rules.RDa的部分内容,没有它我们无法复制。 -
嗨,约翰,我添加了必要的数据。它在我的github上,如果它可以帮助重现问题。问题中包含的 Github 链接
-
嗨,约翰,我可以解决这个问题。解决方案写在下面。
标签: r shiny shiny-server