R中的闪亮:从服务器向UI发送数值

时间:2017-03-04 10:11:27

标签: r shiny

我想从server.r

向ui.r发送数值

例如,当我将数据库加载到服务器端时,我想将length(colnames(datababase))发送到UI。

作为数值发送非常重要,因为我想在UI端进行一些计算。

我该怎么做?

我知道有些像textOutput这样的解决方案与UI通信,但现在我想传递数值。

ps1:as.numeric(textOutput("text1'))不起作用。 :)

ps2:我也知道函数sendCustomMessageShiny.addCustomMessageHandler但我真的不明白如何使用它直接向UI发送信息。

2 个答案:

答案 0 :(得分:1)

我建议使用renderUI()的解决方案:)。

library(shiny)

ui <- fluidPage(
  selectInput("nr", "number", 2:4),
  uiOutput("plots")
)

server <- function(input, output, session) {

  output$plots <- renderUI({
    plot_output_list <- lapply(1:input$nr, function(i) {
      plotname <- paste0("plot", i)
      plotOutput(plotname)
    })
    tagList(plot_output_list)
  })

  observe({
    for(iterNr in 1:input$nr){
      output[[paste0("plot", iterNr)]] <- renderPlot({
        plot(iterNr)
      })
    }
  })
}

shinyApp(ui, server)

答案 1 :(得分:1)

如果我正确理解你的问题,你需要看一下observeEvent和反应值,这样你的绘图每次输入改变时都会重新渲染(或者其他一些事件发生)

基本上在你的server.R中,在observeEvent中调用renderPlot,你实际上不必将它“发送”到UI(再次,如果我明白你的意思,很难说没有例子)