Ich habe eine Anwendung mit einer großen Anzahl von Parametern. Jeder Parameter hat eine große Granularität, die es schwierig macht, den gewünschten zu finden. Dies bewirkt, dass der reaktive Teil ständig berechnet, was die Dinge verlangsamt. Ich habe einen submitButton hinzugefügt, der das obige Problem löste, aber dann wiederum ein anderes Problem hatte.Shiny Reactivity
Unten ist eine einfache Replikation des Framework, das ich erstelle. Die Parametereingabe nimmt eine Zahl von 1 bis 1000 an, die das Beispiel angibt, zu dem ich möchte. Was ich tun möchte, ist, oben zu tun, aber auch in der Lage zu sein, mit den gleichen Parametern zu resampeln. Was passiert jetzt nach dem Hinzufügen der Schaltfläche "Senden" ist, dass es die Schaltfläche Resample funktionsunfähig macht, es sei denn, ich klicke zuerst Resample zuerst UND dann Update-Schaltfläche.
Irgendwelche Ideen, sie beide getrennt arbeiten zu lassen?
shinyServer(function(input, output) {
getY<-reactive({
a<-input$goButton
x<-rnorm(input$num)
return(x)
})
output$temp <-renderPlot({
plot(getY())
}, height = 400, width = 400)
})
shinyUI(pageWithSidebar(
headerPanel("Example"),
sidebarPanel(
sliderInput("num",
"Number of Samples",
min = 2,
max = 1000,
value = 100),
actionButton("goButton", "Resample"),
submitButton("Update View")
),
mainPanel(
tabsetPanel(
tabPanel("Heatmap",
plotOutput("temp")
),
tabPanel("About"),
id="tabs"
)#tabsetPanel
)#mainPane;
))
EDIT basierend auf Joes Antwort:
shinyServer(function(input, output) {
getY<-reactive({
isolate({a<-input$goButton
x<-rnorm(input$num)
return(x)})
})
output$temp <-renderPlot({
b<-input$goButton1
plot(getY())
}, height = 400, width = 400)
})
shinyUI(pageWithSidebar(
headerPanel("Example"),
sidebarPanel(
sliderInput("num",
"Number of Samples",
min = 2,
max = 1000,
value = 100),
actionButton("goButton", "Resample"),
actionButton("goButton1","Update View")
),
mainPanel(
tabsetPanel(
tabPanel("Heatmap",
plotOutput("temp")
),
tabPanel("About"),
id="tabs"
)#tabsetPanel
)#mainPane;
))
Sie haben eine bemerkenswerte Art, Code zu schreiben. Tonnen Leerraum * zwischen * Zeilen aber praktisch * keine * um Schlüsseloperatoren ... –
Sorry wird den Code das nächste Mal vor dem Posten bearbeiten, ich hatte es eilig vom Kopieren und Einfügen ... – user1234440