我想将2个Rdata文件导入到我的shinyapp中,然后在主面板中显示表,我尝试了以下代码,但是它给了我一个字符输出:

我应该在我的代码中添加什么才能获得数据文件呢?我如何允许我的应用程序也导入csv文件?
这是我的密码:
服务器。R:
shinyServer(function(input,output){
#lecture de la table panel
panel <- reactive({
req(input$pan)
sessionEnvir <- sys.frame()
if (!is.null(input$pan)) {
p<-load(input$pan$datapath, sessionEnvir)
}
p
})
#lecture dela table achat
achats<- reactive({
req(input$achat)
sessionEnvir <- sys.frame()
if (!is.null(input$achat)){
a<-load(input$achat$datapath, sessionEnvir)
}
a
})
output$t <- renderTable(
panel()
)
output$t2 <- renderTable(
achats()
)
}
)UI.R:
ui <- fluidPage(
titlePanel("Shiny app"),
sidebarLayout(
sidebarPanel(
#Import des tables panel et achat
fileInput("pan", label = "Import panel table",
multiple = FALSE,
buttonLabel = "Browse",
placeholder = "No file selected",
accept = c('.RData')),
fileInput("achat", label = "Import purchase table",
multiple = FALSE,
buttonLabel = "Browse",
placeholder = "No file selected",
accept = c('.RData')),
),
mainPanel(
tableOutput('t'),
tableOutput('t2'),
)
)
)有什么帮助吗?
谢谢
发布于 2022-08-29 14:09:02
这完全正常。Rdata文件可能包含多个对象。函数load返回加载对象的名称,因此您的panel和achats反应性将返回存储对象的名称。这不是你想要的!相反,返回存储在提供环境中的对象。我也不会将该对象存储在当前框架中,而是存储在一个新的临时环境(new.env())中。如果给定的rdata文件包含多个对象,也会出现问题!
如果您想要单个对象文件,最好使用RDS文件。然后,您可以使用p<-readRDS(dataPath)加载和存储它!
...
if (!is.null(input$pan)) {
tmp_env <- new.env()
p <- load(input$pan$datapath, tmp_env )
if(length(p)==1)
p <- tmp_env[[p]]
else
p <- NULL # better generate error !
}
phttps://stackoverflow.com/questions/73529946
复制相似问题