导入csv并使用闪亮的仪表板将其写入

时间:2018-11-07 14:32:25

标签: r import shiny shinydashboard

因此,我正在编写一个闪亮的程序,该程序读取3个.csv文件,然后具有显示数据不同变体/数据点的选项卡。数据每天更新一次,我希望在闪亮的仪表板上有一个选项卡,用户可以在该选项卡上上传新的3个.csv文件。

下面的玩具代码:

    csv1=read.csv("csv1.csv")
    csv2=read.csv("csv2.csv")
    csv3=read.csv("csv3.csv")
    csvother=read.csv("somestatic.csv")

    # Create an header
    header = dashboardHeader(#header Stuff)

    # Create an sidebar
    sidebar = dashboardSidebar(
      sidebarMenu(.....4 sidebar menus....))

    # Create an body
    body <- dashboardBody(

      fluidPage(
      tabItems(
        tabItem(*****other tabs**** then:
         tabItem(tabName="Thing4",

              fileInput("newcsv1", "Choose new CSV1",
                          multiple = FALSE,
                          accept = c(".csv")), 

        )#End tabItems )#end Fluidpage   )#end Dashboard Body 
ui=dashboardPage(header,sidebar,body)   

然后输入服务器代码

    server=function(input, output) {
    output$csv1=renderDT({ #pivot stuff, output table{)
    output$csv2=renderDT({ #pivot stuff, output table{)
    output$csv3=renderDT({ #pivot stuff, output table{)
} 

因此从这里开始,当用户转到第4个选项卡并选择要导入的文件时,我该如何设置它,在哪里放置用于处理代码的函数...即写csv,然后将csv1设置为等于新的csv1文件?

1 个答案:

答案 0 :(得分:0)

这应该满足您的要求:

server=function(input, output) {
  output$csv1=renderDT({ #pivot stuff, output table})
  output$csv2=renderDT({ #pivot stuff, output table})
  output$csv3=renderDT({ #pivot stuff, output table})

  values <- reactiveValues(
    csv1 = csv1,
    csv2 = csv2,
    csv3 = csv3
  )

  observeEvent(input$newcsv1, {
     values$csv1=read.csv(input$newcsv1$datapath)
  })
}

如果csv1,csv2和csv3正在更改,则需要使用reactiveValues,而不是全局保存它们。请注意,您现在需要在服务器文件中使用values$csv1-例如

output$csv1=renderDT({ #pivot stuff, output table})

将使用values$csv1而不是csv1。另外,请查看此链接以使用fileInput