使用ShinyFiles加载数据文件

时间:2016-04-14 10:10:36

标签: r shiny

我有几个数据文件,我的Shiny应用程序应该加载。为此,我尝试使用ShinyFiles package。来自ui.R

shinyFilesButton('file', 'Load Dataset', 'Please select a dataset', FALSE)

但是,我不确定在server.R加载文件的内容。我知道如何获取文件路径和所有,但我在哪里放置load()命令?

这是我现在尝试的:(来自server.R):

observeEvent(input$file, {
 inFile <- parseFilePaths(roots=roots, input$file)
 load(as.character(inFile$datapath), envir=.GlobalEnv)
})

文件是由save.image()保存的数据文件,包含由另一个R脚本生成的一些数据框,矩阵和列表。在我的Shiny应用程序中,我想将数据主要用于图形,因此我需要它们在应用程序运行时加载。

1 个答案:

答案 0 :(得分:4)

很难理解是什么意思&#34; Shiny似乎没有使用内容&#34;

参见示例( - 我的对象&#34; y&#34;在我的数据中。)

UI

shinyUI(

  fluidPage(    
    shinyFilesButton('file', 'Load Dataset', 'Please select a dataset', FALSE),
    textOutput("txt")

  )
)

服务器

shinyServer(function(input, output,session) {
  shinyFileChoose(input,'file', session=session,roots=c(wd='.'))

  observeEvent(input$file, {
    inFile <- parseFilePaths(roots=c(wd='.'), input$file)
    load(as.character(inFile$datapath), envir=.GlobalEnv)
    })

  output$txt=renderPrint({
  input$file
  if(exists("y")) y})

  })

文字已从数据更改。

为简化起见,您可以使用reactiveValues之类的

shinyServer(function(input, output,session) {
  shinyFileChoose(input,'file', session=session,roots=c(wd='.'))
  envv=reactiveValues(y=NULL)
  observeEvent(input$file, {
    inFile <- parseFilePaths(roots=c(wd='.'), input$file)
    load(as.character(inFile$datapath))
    envv$y=y
    })

  output$txt=renderPrint({envv$y})

  })

如果你在会话中需要不同的数据,两种变体都可以工作,但第二种更好。