2014-02-18 5 views
12

У меня есть рабочее приложение R, которое я хочу сделать доступным через Интернет, используя Shiny. Мое приложение получает файл как вход, поэтому клиент загружает файл через ui.R. server.R получает файл, а затем я хочу вызвать свое приложение. Однако, когда я использую source(), myApp не знает файл, который я получил на сервере.R и throws ошибка: объект не найден. Это код server.Rusing Source() in Shiny

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 (который необходим в качестве входного файла в моем текущем приложении).

+7

Попробуйте использовать 'источник ("./ КОД/run_myApp.r", локальный = TRUE)' – jdharrison

+3

Вам нужно «изолировать» эту часть. 'isolate ({source (" ./ CODE/run_myApp.r ")})' –

+0

@jdharrison спасибо, теперь он работает –

ответ

7

Чтобы использовать источник в вашем блестящем приложении вам нужно вызвать 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) 
    } 
    }) 
})