Цифровой ввод не работает в априори в R блестящий
У меня есть этот код в ui.R:
tabPanel("Experiment 1",sidebarPanel(numericInput("supp", "Vložte hodnotu support", 0.0001, min = 0.0001, max = 0.8, step = 0.0001),
numericInput("conf", "Vložte hodnotu confidence", 0.0001, min = 0.0001, max = 0.8, step = 0.0001)),
и этот код в server.R:
rules.all <- apriori(d, parameter=list(support=input$supp, confidence=input$conf))
library(arulesViz)
output$scatterPlot = renderPlot(
plot(rules.all, method = 'scatterplot')
)
У меня есть эта ошибка: Когда я изменяю значения поддержки и достоверности в numericInput, R Блестящий не отображал график рассеяния. Почему это не сработало? Помоги мне, пожалуйста.
2 ответа
Из этих нескольких строк кода я вижу, что вы пытаетесь получить доступ к входам из пользовательского интерфейса в нереактивной среде. Это не допускается, и блестящий дает ошибку. Вы должны создать реактивный набор данных (например, rules.all
) в котором вы должны разместить
apriori(d, parameter=list(support=input$supp, confidence=input$conf))
Набор данных будет обновляться каждый раз, когда вы взаимодействуете с одним виджетом, и вы можете получить к нему доступ в каждом render*
Функция с rules.all()
plot(rules.all(), method = 'scatterplot')
Поскольку вы не предоставили данные, я использовал пример набора данных Groceries
из ссылки plot.rules
library(shiny)
library(arulesViz)
ui <- shinyUI(fluidPage(
titlePanel(""),
tabsetPanel(
tabPanel("Experiment 1",
sidebarPanel(
# Changed values of the widgets
numericInput("supp", "Vložte hodnotu support", 0.01,
min = 0.01, max = 0.8, step = 0.01),
numericInput("conf", "Vložte hodnotu confidence", 0.01,
min = 0.01, max = 0.8, step = 0.01))
)
),
mainPanel(
plotOutput("scatterPlot")
)
)
)
server <- shinyServer(function(input, output) {
## You can't access inputs from UI in a not reactive environment.
## rules.all <- apriori(d, parameter=list(support=input$supp, confidence=input$conf))
data("Groceries")
# Create a reactive dataset which you can access in all render* functions
# via rules.all()
rules.all <- reactive({
apriori(Groceries, parameter=list(support=input$supp, confidence=input$conf))
})
output$scatterPlot = renderPlot({
plot(rules.all(), method = 'scatterplot')
})
})
shinyApp(ui = ui, server = server)
Спасибо большое... но я должен сделать эти операции за apriori, а затем сделать точечный график на экране:
quality(rules.all) <- round(quality(rules.all), digits=3)
top.support <- sort(rules.all, decreasing = TRUE, na.last = NA, by = "support")
rules.sorted = sort(rules.all, by="lift")
subset.matrix = is.subset(rules.sorted, rules.sorted)
subset.matrix[lower.tri(subset.matrix, diag=T)] = NA
redundant = colSums(subset.matrix, na.rm=T) >= 1
rules.pruned = rules.sorted[!redundant]
rules.all = rules.pruned
rules.sorted = sort(rules.all, by="lift")
rules.all = rules.sorted
(мой набор данных для ввода в apriori называется "d")
что я должен делать с кодом?