Establecer objeto global en Shiny
subset (1)
data2
es una función que devuelve el subconjunto que está buscando. Entonces necesita llamar a data2
y guardar el resultado en alguna variable, luego puede trazar / resumir las diversas columnas
## data should be defined somewhere up here or in global.R
shinyServer(function(input, output) {
data2 <- reactive(data[data$x == input$z, ])
output$plot <- renderPlot({
newData <- data2()
plot(newData$x, newData$y)
})
output$table <- renderTable({
newData <- data2()
summary(newData$x)
})
})
Si aún no lo has hecho, te recomiendo leer a través de http://rstudio.github.io/shiny/tutorial/#welcome . La página sobre reactividad aborda esta cuestión bastante bien.
Digamos que tengo el siguiente archivo server.R en brillante:
shinyServer(function(input, output) {
output$plot <- renderPlot({
data2 <- data[data$x == input$z, ] # subsetting large dataframe
plot(data2$x, data2$y)
})
output$table <- renderTable({
data2 <- data[data$x == input$z, ] # same subset. Oh, boy...
summary(data2$x)
})
})
¿Qué puedo hacer para no tener que ejecutar data2 <- data[data$x == input$z, ]
dentro de cada llamada al render? Si hago lo siguiente, aparece el error "objeto de tipo ''cierre'' no se puede subconjuntar":
shinyServer(function(input, output) {
data2 <- reactive(data[data$x == input$z, ])
output$plot <- renderPlot({
plot(data2$x, data2$y)
})
output$table <- renderTable({
data2 <- data[data$x == input$z, ]
summary(data2$x)
})
})
¿Qué hice mal?