Я работаю над блестящим приложением, которое должно взять файл .Rdata как входной сигнал от пользователя и выполнить определенные операции над ним перед созданием вывода. Таким образом, в основном, после того, как пользователь выбирает файл, мне нужно загрузить данные и сохранить его содержимое, которое, как ожидается, будет объектом списка R в переменной для дальнейшего использования. Я пробовал много способов, но я просто не могу загрузить файл .Rdata или сохранить его в переменной. Может ли кто-нибудь помочь? Я знаю, что в прошлом вопрос был задан в прошлом, но ответы были неясны. Любая помощь будет высоко оценена.Загрузка Пользовательский ввод .Rdata on Shiny App
2
A
ответ
4
Что делать, если вы попытаетесь использовать функцию new.env
и загрузите .Rdata в новую среду.
library(shiny)
server <- function(input, output) {
# Global variable to store loaded environment
env <<- NULL
load_Rdata <- function(){
if(is.null(input$file)) return(NULL)
inFile <- isolate({ input$file })
# Create new environment to load data into
n.env <- new.env()
env <<- n.env
load(inFile$datapath, envir=n.env)
# Check if specified variable exists in environment
if(!is.null(n.env$var)){
output$out <- renderPrint({ str(n.env$var) })
}
else{
output$out <- renderPrint({ "No variable var in .Rdata file" })
}
}
save_Rdata <- function(){
if (!is.null(env)){
env$new.var <- "My new variable"
save(env, file="~/savedWorkspace.Rdata")
}
else{
output$out <- renderPrint({ "No .Rdata file loaded" })
}
}
observeEvent(input$btnLoad,{
load_Rdata()
})
observeEvent(input$btnSave,{
save_Rdata()
})
}
ui <- shinyUI(fluidPage(
fileInput("file", label = "Rdata"),
actionButton(inputId="btnLoad","Load"),
actionButton(inputId="btnSave","Save"),
verbatimTextOutput("out")
))
shinyApp(ui = ui, server = server)
Сохраненная переменная может быть доступна через:
> load("~/savedWorkspace.Rdata")
> env$new.var
[1] "My new variable"
И пример рабочего пространства для загрузки может быть создан как:
> var <- "My variable to load"
> save.image(file="~/myWorkspace.Rdata")
Было ли что-то подобное, что искали?
Спасибо! Однако я использовал что-то более простое. Я просто загрузил данные в текущую среду, написав «load (inFile $ datapath, envir = environment())», и он сработал. –
Хорошо, идея это еще проще. Надеюсь, это было полезно –