2016-05-03 13 views
1

Ich habe diesen Code in ui.R:Zahleneingabe funktioniert nicht in apriori in R glänzend

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)), 

und diesen Code in server.R:

rules.all <- apriori(d, parameter=list(support=input$supp, confidence=input$conf)) 

library(arulesViz) 

output$scatterPlot = renderPlot(
plot(rules.all, method = 'scatterplot') 
) 

Ich habe diesen Fehler: Wenn ich Support- und Konfidenzwerte in numericInput ändere, zeigte R shiny kein Streudiagramm an. Warum hat es nicht funktioniert? Hilf mir bitte.

Antwort

0

Aus diesen wenigen Codezeilen kann ich erkennen, dass Sie versuchen, in einer nicht reaktiven Umgebung auf Eingaben von der Benutzeroberfläche zuzugreifen. Es ist nicht erlaubt und glänzend ergibt einen Fehler. Sie haben einen reaktiven-Datensatz erstellen (zum Beispiel rules.all), in dem Sie

apriori(d, parameter=list(support=input$supp, confidence=input$conf)) 

Der Datensatz jedes Mal platzieren, sollten Sie mit einem einzigen Widget interagieren wird aktualisiert und Sie können es dann in jeder render* Funktion Zugriff mit rules.all()

plot(rules.all(), method = 'scatterplot') 

Da Sie mir keine Daten liefern verwendet, um einen Beispiel-Datensatz Groceries von der Referenz von 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) 
0

Dank viel ... aber ich muß diese Operationen hinter apriori und dann macht ein Streudiagramm auf dem Bildschirm zu tun:

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 

(meine Daten-Set für die Eingabe in Apriori heißt "d")

was muss ich mit dem Code tun?