我正在创建一个应用程序,创建一个简单的字符串列表(actives$name),并向我展示这些字符串。因为某种原因,它不起作用。下面是代码:
library(shiny)
ui <- fluidPage(
sidebarLayout(
mainPanel(
textInput(inputId = "name", label = "Name", value = "foo"),
actionButton(inputId = "add", label = "Add")
),
sidebarPanel(
uiOutput("activeB")
)
),
)
server <- function(input, output, session) {
actives <- reactiveValues()
observeEvent(input$add,{
actives$name <- c(actives$name, input$name)
})
output$activeB <- renderUI({
for (i in 1:length(actives$name)) {
p("Name:")
verbatimTextOutput(actives$name[i])
print(actives$name[i])
}
})
}
shinyApp(ui = ui, server = server)我在for循环中使用的for显示了正确的结果,因此它“知道”我要做什么。只是不输出而已。我做错了什么?
发布于 2020-06-10 06:58:54
有意思的那个。我花了几次时间去拿。您需要将renderUI输出包装在tagList中
output$activeB <- renderUI({
tagList(HTML(paste(actives$name, collapse="<br>")))
})两项意见:
print循环是renderUI中的最后一条语句,因此renderUI从不返回任何内容。(uiOutput和renderUI就能得到同样的效果,对吗?我假设您已经将实际用例简化为关注这个问题--在这种情况下,谢谢!:)完整代码:
library(shiny)
ui <- fluidPage(
sidebarLayout(
mainPanel(
textInput(inputId = "name", label = "Name", value = "foo"),
actionButton(inputId = "add", label = "Add")
),
sidebarPanel(
uiOutput("activeB")
)
)
)
server <- function(input, output, session) {
actives <- reactiveValues(
name=c()
)
observeEvent(input$add,{
actives$name <- c(actives$name, input$name)
})
output$activeB <- renderUI({
tagList(HTML(paste(actives$name, collapse="<br>")))
})
}
shinyApp(ui = ui, server = server)https://stackoverflow.com/questions/62297090
复制相似问题