在我从事的项目中,我需要导入一个 RData 文件。该文件包含几个 data.frame 和一个列表。但我无法显示data.frame。有人应该有一个想法吗?
事实上,我需要与之前的会话相同的数据,这就是我导入 RData 文件的原因。
这是我想做的一个例子。
在 global.R 中:
## Package
library(shiny)
## Data Frame
data("iris")
data("mtcars")
data("Orange")
## Data
dfA <- iris
dfB <- mtcars
dfC <- Orange
init_ls <- list("a" = 1, "b" = LETTERS[c(5, 3)])
## Save
save(dfA, dfB, dfC, init_ls, file = "example.RData")
LoadToEnvironment <- function(file, env = new.env()) {
load(file, env)
return(env)
}
在 UI.R 中:
shinyUI(
fluidPage(
##===================================.
## UPLOAD
##===================================.
sidebarLayout(
##-------------------.
## Side Bar : IMPORTATION
##-------------------.
sidebarPanel(
width = 4,
fileInput(
inputId = "init_file",
label = "Init File (RData)",
accept = c(
"application/RData",
".RData"
)
)
),
##-------------------.
## Main : View Importation
##-------------------.
mainPanel(
tabsetPanel(
id = "tabset_upload",
tabPanel(title = "dfA",
tableOutput("dfA")),
tabPanel(title = "dfB",
tableOutput("dfB")),
tabPanel(title = "dfC",
tableOutput("dfC"))
)
)
##-------------------.
## end sideBar
##-------------------.
)
)
)
在 Server.R 中:
我尝试了两种导入 .RData 的方法(ImportInit_1 et ImportInit_2)
shinyServer(function(input, output, session){
##==============================================.
## Import
##==============================================.
ImportInit_1 <- reactive({
## path
path <- input$init_file
if(is.null(path)){
return(NULL)
}else{
env <- new.env()
load(path, envir = env)
return(env)
}
})
ImportInit_2 <- reactive({
## path
path <- input$init_file
if(is.null(path)){
return(NULL)
}else{
env <- reactiveFileReader(1000, session, path, LoadToEnvironment)
return(env)
}
})
##==============================================.
## OUTPUT DATA
##==============================================.
## Output dfTransit using "importTransit()"
output$dfA <- renderTable(ImportInit_1()[["dfA"]])
output$dfB <- renderTable(ImportInit_2()[["dfB"]])
output$dfC <- renderTable(ImportInit_1()[["dfC"]])
})
错误是: ImportInit_1() --> "bad 'file' argument" ImportInit_2() --> "invalid filename argument。
==> 我不明白为什么不显示数据,知道我已经找到了解决方案。
提前感谢任何可以帮助我的人。
赛德