Импортируйте CSV и запишите их с блестящей приборной панелью - PullRequest
0 голосов
/ 07 ноября 2018

Итак, я пишу блестящую программу, которая читает 3 файла .csv, а затем имеет вкладки, которые отображают различные варианты / сводки данных. Данные обновляются ежедневно, и я хотел, чтобы на блестящей приборной панели была вкладка, куда пользователь мог бы пойти и загрузить новые 3 .csv файла.

ToyCode ниже:

    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 голосов
/ 07 ноября 2018

Это должно сделать то, что вам нужно:

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)
  })
}

Вам нужно будет использовать responsetiveValues ​​ для csv1, csv2 и csv3, если они изменяются, вместо того, чтобы сохранять их глобально. Обратите внимание, что теперь вам нужно использовать values$csv1 в файле сервера - например,

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

будет использовать values$csv1 вместо csv1. Также посмотрите на эту ссылку для использования fileInput .

...