【问题标题】:How to display a dynamic number of outputs in R shiny?如何在 R Shiny 中显示动态数量的输出?
【发布时间】:2018-04-24 02:59:43
【问题描述】:

我做什么: 我有一个闪亮的应用程序,它将我的 csv 的每一列作为逐字输出返回。我附上了我当前的代码(UI.R 和 Server.R)和下面的 csv 文件。

我的问题:我需要为许多不同的 csv 文件编写这样的应用程序,这些文件都有不同的列数。我如何自动执行此操作而无需编写

output$myColumn01 = renderPrint({
as.character(D$Names)
})

h1("Names"),
verbatimTextOutput("myColumn01"),

手动为每一列?

-

这是我的 csv(“myCSV.csv”):

Names;Pages;Scores;Numbers
George;T;3;5
Jim;I;4;23
Jack;T;6;12
Anna;R;4;3

这是我的 server.R 文件:

library(shiny)
library(dplyr)
library(shinydashboard)



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


D = read.csv(file = "myCSV.csv", sep = ";")



output$myColumn01 = renderPrint({
as.character(D$Names)
})


output$myColumn02 = renderPrint({
as.character(D$Pages)
})


output$myColumn03 = renderPrint({
as.character(D$Scores)
})


output$myColumn04 = renderPrint({
as.character(D$Numbers)
})



})

这是我的 ui.R 文件:

library(shiny)
library(dplyr)
library(shinydashboard)


ui <- shinyUI(dashboardPage(

  dashboardHeader(title =  "Sessions"),
  dashboardSidebar(
    width = 350,
    collapsed = TRUE,
     ""
  ),



  dashboardBody(


  h1("Names"),
  verbatimTextOutput("myColumn01"),
  h1("Pages"),
  verbatimTextOutput("myColumn02"),
  h1("Scores"),
  verbatimTextOutput("myColumn03"),
  h1("Numbers"),
  verbatimTextOutput("myColumn04")

  )
))

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    这是你所期望的吗?

    library(shiny)
    library(dplyr)
    library(shinydashboard)
    
    server <- shinyServer(function(input, output, session) {
    
      D = read.csv(file = "myCSV.csv", sep = ";")
    
      lapply(1:ncol(D), function(i){
        output[[sprintf("myColumn%02d",i)]] <- 
          renderPrint({
            as.character(D[[colnames(D)[i]]])
          })
      })
    
      output$ui <- renderUI({
        lapply(1:ncol(D), function(i){
          tagList(
            h1(colnames(D)[i]),
            verbatimTextOutput(sprintf("myColumn%02d",i))
          )
        })
      })
    
    })
    
    
    ui <- shinyUI(dashboardPage(
    
      dashboardHeader(title = "Sessions"),
      dashboardSidebar(
        width = 350,
        collapsed = TRUE,
        ""
      ),
    
      dashboardBody(
    
        uiOutput("ui")
    
      )
    ))
    
    shinyApp(ui=ui, server=server)
    

    【讨论】:

      猜你喜欢
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 2016-05-10
      • 1970-01-01
      • 2018-11-28
      • 2018-09-30
      • 2022-01-17
      相关资源
      最近更新 更多