简体   繁体   English

如何在R Shiny中显示动态输出数量?

[英]How to display a dynamic number of outputs in R shiny?

What I do: I have a shiny App that returns every column of my csv as a verbatim ouput. 我的工作:我有一个闪亮的应用程序,可以逐字输出返回csv的每一列。 I attached my current code (UI.R and Server.R) and the csv-File below. 我附加了当前代码(UI.R和Server.R)以及下面的csv文件。

My Question : I need to write such an app for many different csv-files that all have a variing number of columns. 我的问题 :我需要为许多具有不同列数的不同csv文件编写这样的应用程序。 How do I do this automatically without having to write 我如何自动执行此操作而无需编写

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

and

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

for every column manually? 每列手动?

- --

Here is my csv ("myCSV.csv"): 这是我的csv(“ myCSV.csv”):

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

Here is my server.R-File: 这是我的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)
})



})

Here is my ui.R-File: 这是我的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")

  )
))

Is it what you expect ? 是您所期望的吗?

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)

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM