动态地将数据上传到Shiny App

时间:2018-02-14 18:42:53

标签: r shiny

我想知道是否可以让用户在使用应用程序时从本地硬盘上的Shiny应用程序中上传数据(可能是.CSV格式),然后Shiny将动态执行分析。

目前,对于此类分析,我将数据保存在WWW文件夹中的RData / CSV格式,然后Shiny从那里获取数据 - 但这不是真正的动态。

任何这样的想法都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

是的,Shiny有一个名为fileInput的输入,可让用户上传数据。来自文档here

## Only run examples in interactive R sessions
if (interactive()) {

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      fileInput("file1", "Choose CSV File",
        accept = c(
          "text/csv",
          "text/comma-separated-values,text/plain",
          ".csv")
        ),
      tags$hr(),
      checkboxInput("header", "Header", TRUE)
    ),
    mainPanel(
      tableOutput("contents")
    )
  )
)

server <- function(input, output) {
  output$contents <- renderTable({
    # input$file1 will be NULL initially. After the user selects
    # and uploads a file, it will be a data frame with 'name',
    # 'size', 'type', and 'datapath' columns. The 'datapath'
    # column will contain the local filenames where the data can
    # be found.
    inFile <- input$file1

    if (is.null(inFile))
      return(NULL)

    read.csv(inFile$datapath, header = input$header)
  })
}

shinyApp(ui, server)
}