我有几个数据文件,我的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应用程序中,我想将数据主要用于图形,因此我需要它们在应用程序运行时加载。
答案 0 :(得分:4)
很难理解是什么意思&#34; Shiny似乎没有使用内容&#34;
参见示例( - 我的对象&#34; y&#34;在我的数据中。)
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})
})
如果你在会话中需要不同的数据,两种变体都可以工作,但第二种更好。