我终于想要制作一个闪亮的应用程序。我正在尝试将.xlsx文件上传到应用程序,然后应用一些分析并将输出作为单独的.xlsx文件下载。分析和获取输出的代码在Shiny外部运行时工作,我每天都使用它,因此我只是试图通过source
调用它并保存重复的工作。这就是我用Shiny尝试的东西。
我在从W2S.R脚本调用文件时遇到问题,同时避免了错误。我找到了避免错误的方法。下面的代码是一个准系统模型。但是,现在我无法获得实际输入(输出工作正常,屏幕上有一个表输出,屏幕外有一个XLSX输出)。
我在W2S.R脚本中使用W2S <- input$W2S1
,但是它没有识别变量input
,如果直接在服务器函数中使用它就会这样做。如何让它在脚本中运行?或者还有其他解决方法吗?
library(shiny)
ui <- fluidPage(
titlePanel(h1("Goods In Transit Analysis", align="center")),
sidebarLayout(
sidebarPanel(
fileInput("W2S1", label="Select GIT W2S file")
),
mainPanel(
tableOutput("contents")
)
)
)
server <- function(input, output) {
output$contents <- renderTable(if(is.null(input$W2S1)){return(NULL)}
else{source("./W2S.R")})
}
shinyApp(ui = ui, server = server)
我会在输入工作后更新。请帮忙。
编辑:如上所述取得了一些进展。所以更新了新代码。
答案 0 :(得分:0)
最后钉了它。我需要一个observe
函数并使用$datapath
参数。
library(shiny)
ui <- fluidPage(
# Application title
titlePanel(h1("Goods In Transit Analysis", align="center")),
# Sidebar iputs
sidebarLayout(
sidebarPanel(
fileInput(inputId="W2S", label="Select GIT W2S file")
),
# On Screen output
mainPanel(
h3(textOutput("filePath")),
tableOutput("contents")
)
)
)
# Underlining code for output
server <- function(input, output) {
observe({
source("./Code/W2S.R")
W2S <- input$W2S
output$contents <- renderTable(if(is.null(W2S)){return(NULL)}
else{W2S_F(W2S$datapath)})
})
}
# Run the application
shinyApp(ui = ui, server = server)