我正在尝试使用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选择的文件的标题。我不明白我在做什么错。
答案 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
))
注意:我在上面的代码中更改了根路径,以使其在我的系统上运行。