ShinyFiles库不适用于“ read.csv”

时间:2018-10-10 03:11:34

标签: r shiny

我正在尝试使用ShinyFiles库,当我找出了ShinyFiles的UI部分时,我无法使服务器部分正常工作。到目前为止,这是我的代码

library(shiny)
library(shinyFiles)

ui <- shinyUI(pageWithSidebar(
  headerPanel(
    'Selections with shinyFiles',
    'shinyFiles example'
  ),
  sidebarPanel(
    shinyFilesButton('file', 'File select', 'Please select a file', FALSE)
    ),
  mainPanel(
    tags$h4('The output of a file selection'),
    tableOutput("contents")
    )
    ))

server <- shinyServer(function(input, output, session) {
  shinyFileChoose(input, 'file', roots=c(wd='/home/rstudio'), filetypes=c('', 'csv'))
  output$contents <- renderTable({
    df <- read.csv(input$file)
    print(head(df))
  })
})

runApp(list(
  ui=ui,
  server=server
))

这是我得到的错误

Warning: Error in read.table: 'file' must be a character string or connection

我只想让服务器端打印我使用ShinyFilesButton选择的文件的标题。我不明白我在做什么错。

1 个答案:

答案 0 :(得分:2)

您需要使用parseFilePaths https://www.rdocumentation.org/packages/shinyFiles/versions/0.3.2/topics/parseFilePaths来解析文件名。然后应使用$datapath来获取文件名。

library(shiny)
library(shinyFiles)

ui <- shinyUI(pageWithSidebar(
  headerPanel(
    'Selections with shinyFiles',
    'shinyFiles example'
  ),
  sidebarPanel(
    shinyFilesButton('file', 'File select', 'Please select a file', FALSE)
  ),
  mainPanel(
    tags$h4('The output of a file selection'),
    tableOutput("contents")
  )
))

server <- shinyServer(function(input, output, session) {
  shinyFileChoose(input, 'file', roots=c(wd='.'), filetypes=c('', 'csv'))
  output$contents <- renderTable({
    inFile <- parseFilePaths(roots=c(wd='.'), input$file)
    if( NROW(inFile)) {
      df <- read.csv(as.character(inFile$datapath))
      print(head(df))
    }
  })
})

runApp(list(
  ui=ui,
  server=server
))

注意:我在上面的代码中更改了根路径,以使其在我的系统上运行。

这与:Loading data files with ShinyFiles