当在另一个项目中使用下面的代码时,我收到了上面提到的错误。有人知道怎么纠正这个问题吗?
ui <- fluidPage(
column(2,
uiOutput("test_input_ui"),
sliderInput(
"test_input",
label = "Select time",
min = lubridate::origin,
max = lubridate::origin + days(1) - seconds(1),
value = c(lubridate::origin, lubridate::origin + days(1) - seconds(1)),
step = 5 * 60,
timeFormat = "%H:%M",
timezone = "+0000",
ticks = FALSE
)
)
)
server<-function(input,output){
output$test_input_ui <- renderUI({input$test_input)}
}
shinyApp(ui = ui, server = server)
´´´
发布于 2020-08-18 09:50:09
我没有得到与您相同的错误,并且您在output$test-input_ui
的定义中有一个拼写错误。
然而,问题的根本原因是您滥用了uiOutput
/renderUI
。您需要使用它们来定义您想要显示的输出小部件,然后在其他地方提供相关的渲染器。您将跳过输出小部件的定义,直接转到渲染器。这是一个MWE,我认为,它可以做你想要的:
library(shiny)
library(lubridate)
ui <- fluidPage(
column(2,
uiOutput("test_input_ui"),
sliderInput(
"test_input",
label = "Select time",
min = lubridate::origin,
max = lubridate::origin + days(1) - seconds(1),
value = c(lubridate::origin, lubridate::origin + days(1) - seconds(1)),
step = 5 * 60,
timeFormat = "%H:%M",
timezone = "+0000",
ticks = FALSE
)
)
)
server<-function(input,output){
output$test_input_ui <- renderUI({
tagList(
textOutput("minTime"),
textOutput("maxTime")
)
})
output$minTime <- renderText({input$test_input[1]})
output$maxTime <- renderText({input$test_input[2]})
}
shinyApp(ui = ui, server = server)
发布于 2020-08-18 09:50:52
我想这就是你想要的。uiOutput
的全部意义在于,您可以动态地呈现输出,即,您希望将其放入服务器中:
library(lubridate)
library(shiny)
ui <- fluidPage(
column(2,
uiOutput("test_input_ui")
)
)
server<-function(input, output, session){
output$test_input_ui <- renderUI({
sliderInput("test_input",
label = "Select time",
min = lubridate::origin,
max = lubridate::origin + days(1) - seconds(1),
value = c(lubridate::origin, lubridate::origin + days(1) - seconds(1)),
step = 5 * 60,
timeFormat = "%H:%M",
timezone = "+0000",
ticks = FALSE
)
})
}
shinyApp(ui, server)
https://stackoverflow.com/questions/63465654
复制相似问题