RShiny - 在第一次渲染时生成观察事件图,但有"req"语句



我有一个每次按下动作按钮都会刷新的情节。我想在第一次渲染时显示的情节,即。当用户第一次导航到页面时。目前必须按下动作按钮才能显示绘图。

然而,ignoreNULL在这里不起作用。我有一个请求语句,由于某种原因否定了ignoreNULL的效果。下面我有一个简单的可重复的调试示例。

library(shiny)
library(data.table)
library(ggplot2)

ui <- fluidPage(

sidebarLayout(

sidebarPanel(

uiOutput('inin'),
actionButton(inputId = "trigger",
label = "Trigger", 
icon = icon("refresh"))
),

mainPanel(
plotOutput("outTable")
)

)

)

server <- function(input, output){

output$inin = renderUI(selectInput(inputId = 'ins', label='hi', choices=c('x','y')))

re <- eventReactive(input$trigger, {

req(input$ins)                             # This is absolutely required for my app

a = data.table(x = c("a", "b"), y = round(runif(2),2))

return(a)

}, ignoreNULL = F)

output$outTable <- renderPlot({
ggplot(re(), aes(x=y)) + geom_histogram()
})

}
shinyApp(ui, server)

有办法解决这个问题吗?注释掉请求语句可能很诱人,但对于实际的应用程序(不是这个例子),我必须有它,否则图形将遇到诸如"参数长度为零"等错误的问题。

感谢

也许您可以使用非响应性数据。

在按下操作按钮之前,请按下下面的表。
server <- function(input, output){

output$inin = renderUI(selectInput(inputId = 'ins', label='hi', choices=c('x','y')))

re1 <- data.table(x = c("a", "b"), y = round(runif(2),2))
re <- eventReactive(input$trigger, {

req(input$ins)                             # This is absolutely required for my app

a = data.table(x = c("a", "b"), y = round(runif(2),2))

return(a)

}, ignoreNULL = F)

output$outTable <- renderPlot({
if (input$trigger==0) df <- re1
else df <- re()
ggplot(df, aes(x=y)) + geom_histogram()
})

}

相关内容

最新更新