是否有可能在闪亮的 R 中有不同类型的输出?

Is it possible to have different types of output in shiny R?

我一直在想这个问题是否有答案。

所以我在 server.R

中有这段代码
desc <- reactive({

  for (i in 1:input$txt1){
    print(paste("Cluster ke", i))
    clust <- ensemble()

    newdata <- clust[which(clust$Cluster==i), 1]
    print(paste(newdata))

    barm <- vector("numeric")
    x <- ncol(clust)-2

    for (j in 2:x){
      datdesc <- clust[which(clust$Cluster==i), j]
      m <- mean(datdesc)
      colnam <- colnames(clust[j])
      print(paste("Rata-rata produktivitas", colnam,":", m))

      for(k in j-1){
        barm[k] <- m
      }
    }
    print(paste(barm))
    barplot(barm)
  }
})

output$desc <- renderPrint({
    desc()
})

而这个在 ui

conditionalPanel(condition="input.choice==3", verbatimTextOutput("desc"))

到目前为止,我可以获得我想要的所有输出,描述性文本和条形图。但是,条形图出现在 R 控制台而不是浏览器上。

有什么方法可以让文本和条形图显示在同一页上吗?

我可以使用 renderPrintverbatimTextOutput 的其他功能吗?

或者其他方式?

我一直在考虑一些解决方案,比如将 desc() 分开,这样它就有两个输出,文本和条形图。但是如果有办法一次性搞定,我也很想学。

当然,有许多不同的输出类型很常见。请参阅 Shiny 画廊以获取更多示例。

根据您提供的代码和模板:

UI.R

bootstrapPage(

  selectInput(
    "choice", "txt1 - descriptive text?",
    c(my_text = "my_text",
      your_text = "your_text")),

  selectInput(inputId = "n_breaks",
              label = "Number of bins in histogram (approximate):",
              choices = c(10, 20, 35, 50),
              selected = 20),

  checkboxInput(inputId = "individual_obs",
                label = strong("Show individual observations"),
                value = FALSE),

  checkboxInput(inputId = "density",
                label = strong("Show density estimate"),
                value = FALSE),

  plotOutput(outputId = "main_plot", height = "300px"),

  conditionalPanel(condition="input.choice=='my_text'", verbatimTextOutput("desc"))


)

Server.R

function(input, output) {
  desc <- reactive({
    "some text goes here, I guess!"

  })

  output$desc <- renderPrint({
    desc()
  })

  output$main_plot <- renderPlot({

    hist(faithful$eruptions,
         probability = TRUE,
         breaks = as.numeric(input$n_breaks),
         xlab = "Pandjie Soerja",
         main = "Pandjie Soerja")

    if (input$individual_obs) {
      rug(faithful$eruptions)
    }

    if (input$density) {
      dens <- density(faithful$eruptions,
                      adjust = input$bw_adjust)
      lines(dens, col = "blue")
    }

  })
}