Я расстроен и нуждаюсь в вашей помощи.
Моя цель - создать приложение блестящий, где вы можете загрузить файл xlsx (как шаблон) с несколькими листами.После этого на этих импортированных листах запускается длинный R-код, который предоставляет выходные данные (подготовленные как data.frames) для таблиц и рисунков, показанных в приложении.
Если я загружаю xlsx-файл слисты локально в R-Shiny (-> без реактивных () переменных, потому что нет FileInput) приложение работает нормально.
Можно ли сохранить различные листы xlsx-файла, загруженного в Shiny, как отдельные data.frames, затем использовать эти data.frames в качестве входных данных для длинного кода R и использовать data.frames, записанные вэтот код R как выход для таблиц и графики?
Несмотря на интенсивное чтение, я далек от (рабочего) решения.
library(shiny)
library(readxl)
library(xlsx)
runApp(
list(
ui = fluidPage(
titlePanel("Use readxl"),
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose xlsx file',
accept = c(".xlsx")
)
),
mainPanel(
tableOutput('contents'))
)),
mainPanel(
tableOutput('contents2'))
)),
server = function(input, output){
storedData1 <- reactiveValues
storedData2 <- reactiveValues
reactive(
storedData1$sheet1 <- input$file1
if(is.null(inFile))
return(NULL)
sheet1 <- read_xlsx(inFile$datapath, sheet = "Sheet1")
storedData2$sheet2 <- input$file1
if(is.null(inFile))
return(NULL)
sheet2 <- read_xlsx(inFile$datapath, sheet = "Sheet2")
sheet1 <- reactive({
return(as(storedData2$sheet1(), "data.frame"))
})
sheet2 <- reactive({
return(as(storedData2$sheet2(), "data.frame"))
})
source("My.RCode.R", local=TRUE)
# This My.RCode.R-File is very long.
# A simple output for better understanding:
# sheet3 <- as.datam.frame(rbind(sheet1, sheet2))
# sheet4 <- as.datam.frame(cbind(sheet1, sheet2))
)
output$contents <- renderDataTable(output_df_from_My.RCode.R()) # or in the example, sheet3
output$contents2 <- renderDataTable(a_second_output_df_from_My.RCode.R()) # or in the example, sheet4
}
)))
Возможно ли что-то подобное?Спасибо за вашу помощь!