Rshiny:使用循环生成动态HTML

时间:2019-05-30 13:05:57

标签: r shiny shinyapps

我有兴趣在Rshiny中生成每个具有动态值的div列表,如下所示。

<div>1</div>
<div>2</div>
<div>3</div>
.
.
.
<div>9</div>

我是通过(在服务器上)遍历列表和列表中每个元素的向量来做到这一点的。我呈现了一个UI output$x1, output$x2, output$x3, etc。同样,我循环遍历以在ui函数上创建9个UI元素。代码如下:

# Define UI for app that draws a histogram ----
ui <- fluidPage(
  fluidRow(
    lapply(1:9, function(i) {
      uiOutput(paste0('x', i))
    })

  )



)

# Define server logic required to draw a histogram ----
server <- function(input, output) {

  obj<- list(

    col1=1:3,
    col2=4:5,
    col3=5:9

  )

  for(elem in obj){
    for(num in elem){
      print(paste0(num))
      output[[paste0(x,num)]]<-renderUI({
        tags$div(
          tags$p(
            num
          )
        )
      })
    }
  }

}

shinyApp(用户界面,服务器) 我的代码有两个问题:

1)由于某种我未知的原因,我的UI上什么都没有。

2)我相信当打印出ui时,它只会打印div的最终值。例如,output$x1 = 9, output$x2= 9, etc

1 个答案:

答案 0 :(得分:0)

  • 在用户界面中使用tagList

  • do.call,而不是paste("x"

  • 使用paste(x循环定义输出,否则您只会得到最后一个


local