У меня есть следующая серверная функция, которая берет два входных файла с вкладки inputFile в пользовательском интерфейсе.
library(shiny)
ui <- fluidPage(
fileInput("CF", label = "CF"),
fileInput("ED", label = "ED"),
actionButton("Run", "Run")
)
server <- function(input, output, session) {
cf_file <- reactive({
cfFile <- input$CF
return(cfFile$datapath)
})
ed_file <- reactive({
edFile <- input$ED
return(edFile$datapath)
})
table_content <- eventReactive(input$Run, {
req(input$ED$datapath)
req(input$CF$datapath)
file_ed <- ed_file()
file_cf <- cf_file()
##the system command uses external program which takes input files (file_cf and file_ed) from fileInput. The command will look like:
#/bin/qt con ed -i file_cf -p file_ed > file_ed.db#
system(paste("/bin/qt con ed -i", file_cf, "-p", file_ed, ">", file_ed,".db" ))
})
}
shinyApp(ui, server)
У меня есть две проблемы:
1) Системная команда нездесь работает, что выдает ошибку:
qt: Error reading file '/var/folders/z0/kms9x7hd6hgdtbtk3kxnjcjxw2_l57/T//RtmpISFd3V/aac5eff9961beb644d8ec5e0/0.phe': End of file
Системная команда берет два входных файла и записывает в выходной файл, добавляя «.db» к одному из inputFile.Может ли кто-нибудь указать, что не так в приведенной выше системной команде?
Я выполнил аналогичный запрос на https://community.rstudio.com/t/system-call-within-r-shiny/11405/3
2) Если системная команда работает, как я могу отобразить вывод ввыводить файл в table_content?
Попытки и ошибки: Я пытался с paste0()
, но не повезло, на этот раз с другой ошибкой, когда он не читает входные файлы file_cf и file_ed.
system(paste0("/bin/qt con ed -i ", file_cf, " -p ", file_ed, " > ", file_ed,".db"))
`Error accessing file '/var/folders/z0/kms9x7hd6hgdtbtk3kxnjcjxw2_l57/T//RtmpjqfSir/6a3263bc18297e4b6567979e/0.cf -p/var/folders/z0/kms9x7hd6hgdtbtk3kxnjcjxw2_l57/T//RtmpjqfSir/02b964d65d0f0b1a9476a8be/0.ed': No such file or directory`
Затем с помощью system2:
system2(paste0("/bin/qt con ed -i ",file_cf, " -p ", file_ed, " > ", file_ed,".db" ))
sh: /bin/qt con ed -i /var/folders/z0/kms9x7hd6hgdtbtk3kxnjcjxw2_l57/T//RtmpjqfSir/ebc57ae122e171f074281112/0.cf -p /var/folders/z0/kms9x7hd6hgdtbtk3kxnjcjxw2_l57/T//RtmpjqfSir/15a75f8fbe5992bd82ab8a22/0.ed > /var/folders/z0/kms9x7hd6hgdtbtk3kxnjcjxw2_l57/T//RtmpjqfSir/15a75f8fbe5992bd82ab8a22/0.ed.db: No such file or directory
Warning in system2(paste0("/bin/qt con ed -i ", :
error in running command
Приведенная выше команда sh: генерируется R при запуске в оболочке вне R, используя пути tmp, она работает и может видеть выходные файлы вТМП путь.Но когда он запускается в R с использованием system
и paste0
, выдает вышеуказанную ошибку.