R Shiny:分析已部署应用中的用户数据

时间:2018-01-02 08:30:59

标签: r shiny

我终于想要制作一个闪亮的应用程序。我正在尝试将.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)

我会在输入工作后更新。请帮忙。

编辑:如上所述取得了一些进展。所以更新了新代码。

1 个答案:

答案 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)