web-dev-qa-db-ja.com

ShinyでSource()を使用する

Shinyを使用してオンラインで利用できるようにしたいRアプリケーションがあります。私のアプリケーションは入力としてファイルを受け取るので、クライアントはui.Rを介してファイルをアップロードします。 server.Rがファイルを受信したら、アプリを呼び出します。ただし、source()を使用すると、myAppはserver.Rで受信したファイルを認識せず、エラー:オブジェクトが見つかりませんをスローします。これはserver.Rのコードです

shinyServer(function(input, output) {

   output$contents <- renderTable({
   inFile <- input$file1
   if (is.null(inFile))
      return(NULL)
   else{
      tdata <- as.matrix(read.table(inFile$datapath))
      head(tdata, n = 2)
      source("./CODE/run_myApp.r")
   }
  })
})

ただし、myAppにはtdata(現在のアプリの入力ファイルとして必要)は含まれていません。

21
Elaheh kamaliha

光沢のあるアプリでソースを使用するには、local = TRUE引数を呼び出す必要があるため、この場合は次のようになります。

shinyServer(function(input, output) {

   output$contents <- renderTable({
   inFile <- input$file1
   if (is.null(inFile))
      return(NULL)
   else{
      tdata <- as.matrix(   read.table(inFile$datapath))
      head(tdata, n = 2)
      source("./CODE/run_myApp.r", local = TRUE)
   }
  })
})
20
jdharrison