Ho un'app lucida in cui la trama deve essere regolata in altezza in base all'input dell'utente. Fondamentalmente, la trama potrebbe avere uno, due o quattro sotto-grafici. Va tutto bene quando ce ne sono uno o due, ma con quattro, le sottotrame vengono schiacciate troppo piccole. Ho cercato di utilizzare una funzione reattiva di darmi un'altezza calcolata con il server, ma ottengo questo errore:Altezza di stampa dinamica in lucido
Error in .getReactiveEnvironment()$currentContext() :
Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.)
Una versione molto semplificata di quello che sto cercando di fare è qui:
library(shiny)
ui <- fluidPage(
fluidRow(
column(2,
radioButtons(inputId = 'plotcount', label = 'Plot Count',
choices = c('1' = 1,
'2' = 2,
'4' = 4
),
selected = '1'
)
),
column(10,
plotOutput(outputId = 'plots')
)
)
)
server <- function(input, output) {
PlotHeight = reactive(
return(500+250*(floor(input$plotcount/4)))
)
output$plots = renderPlot(height = PlotHeight(), {
if(as.numeric(input$plotcount) == 0){
plot.new()
return()
}
print(c(floor(sqrt(as.numeric(input$plotcount))),
ceiling(sqrt(as.numeric(input$plotcount)))
))
opar = par(mfrow = c(floor(sqrt(as.numeric(input$plotcount))),
ceiling(sqrt(as.numeric(input$plotcount)))
)
)
for(i in 1:as.numeric(input$plotcount)){
plot(1:100, 1:100, pch=19)
}
par(opar)
})
}
shinyApp(ui =ui, server = server)
Perfect !! Grazie!! – KirkDCO