R Shiny, поскольку настольное приложение Windows создает текстовый файл с предупреждением

Я изучаю статистику и создал приложение в R Shiny, выполнив все шаги, описанные в http://blog.analytixware.com/2014/03/packaging-your-shiny-app-as-windows.html и столкнулись со следующей проблемой: chrome Portable открывается, мое приложение работает нормально, и я могу его использовать, однако каждый раз, когда я нажимаю на vbs.run, создается новый файл, он называется некоторым числом, т.е. 0,3928118, открытие его в блокноте дает следующее:

proc.time() user system elapsed 3.55 0.26 9.48

Однако в моем коде я нигде не использую функцию proc.time(). Когда я пытаюсь удалить файл - я не могу этого сделать, пока не перезагружу компьютер. Ошибка гласит: «Действие не может быть выполнено, так как файл открыт в Google Chrome Portable». Мой файл run.vbs выглядит так:

Randomize CreateObject("Wscript.Shell").Run "R-Portable\App\R-Portable\bin\R.exe CMD BATCH --vanilla --slave runShinyApp.R" & " " & RND & " ", 0, False

Мой runShinyApp.R выглядит так:

require(shiny,quietly = TRUE, warn.conflicts = FALSE) require(shinyjs,quietly = TRUE, warn.conflicts = FALSE) .libPaths("./R-Portable/App/R-Portable/library") browser.path = file.path(getwd(),"GoogleChromePortable/GoogleChromePortable.exe") options(browser = browser.path) shiny::runApp("./Shiny/",port=8888,launch.browser= TRUE,quiet=TRUE)

Примечание. Я добавил строки 1 и 2 в runShinyApp.R, потому что в этом странном файле я также получил бы сообщение «Загрузка блестящего...... примечания» и т. д., и это удалило их.

Я был бы очень признателен, если бы вы могли помочь мне с этим, поскольку я пробовал все и потратил недели, пытаясь заставить это работать, и я понятия не имею, что здесь происходит не так...


person Kivis    schedule 18.05.2016    source источник
comment
Вы пробовали suppressPackageStartupMessages(require(shiny,quietly = TRUE, warn.conflicts = FALSE)) ?   -  person Tutuchan    schedule 18.05.2016
comment
Спасибо за ваше предложение @Tutuchan. Я получаю следующую ошибку при запуске: Loading required package: shiny Listening on http://127.0.0.1:8888 ERROR: [on_request_read] connection reset by peer > proc.time() user system elapsed 3.69 0.29 5.69   -  person Kivis    schedule 18.05.2016
comment
Это странно. Приложение работает правильно при обычном запуске из R?   -  person Tutuchan    schedule 18.05.2016
comment
@Tuchtan Я добавил предложенную вами строку в мой runShinyApp.R, и теперь я получаю Listening on http://127.0.0.1:8888 > proc.time() user system elapsed 3.57 0.18 6.38 Итак, я избавился от первой строки, но эти две остались   -  person Kivis    schedule 18.05.2016
comment
Да, он отлично работает с R   -  person Kivis    schedule 18.05.2016
comment
Мой runShinyApp.R: require(shiny,quietly = TRUE, warn.conflicts = FALSE) .libPaths("./R-Portable/App/R-Portable/library") # the path to portable chrome browser.path = file.path(getwd(),"GoogleChromePortable/GoogleChromePortable.exe") options(browser = browser.path) shiny::runApp("./Shiny/",port=8888,launch.browser=TRUE)   -  person Kivis    schedule 18.05.2016
comment
Ну, где-то в вашем приложении должен быть proc.time(), который вы должны удалить. Что касается сообщения Listening on ..., используйте параметры quiet в runApp.   -  person Tutuchan    schedule 18.05.2016
comment
Я добавил тишину = TRUE и теперь в созданном файле ничего нет (когда я открываю его с помощью Блокнота, там пустой лист). Файл назван каким-то числом, то есть на этот раз 0.1424982. Повторный запуск run.vbs дает файл только с выводом proc.time() — этой функции нет в моем коде. Я понятия не имею, что происходит.   -  person Kivis    schedule 18.05.2016


Ответы (1)


Это соответствующая строка в вашем коде VBScript:

CreateObject("Wscript.Shell").Run "R-Portable\App\R-Portable\bin\R.exe CMD BATCH --vanilla --slave runShinyApp.R" & " " & RND & " ", 0, False

Когда вы запускаете R CMD BATCH foo.R, он по умолчанию создает файл foo.Rout, который содержит информацию, которую вы воспроизвели (https://stat.ethz.ch/R-manual/R-devel/library/utils/html/BATCH.html). Вы можете проверить это, запустив R CMD BATCH на простом файле R.

В вашем случае имя выходного файла указывается с помощью функции RND VBScript, поэтому вы получаете случайное имя. AFAICT, нет способа не генерировать выходной файл, и пока выполняется пакетный процесс R (который длится до тех пор, пока длится сеанс Shiny), файл заблокирован, поэтому вы не можете его удалить. Вы можете проверить, работает ли Shiny, если замените R CMD BATCH на Rscript.

Если вы не беспокоитесь о том, что ваш конечный пользователь будет напуган появлением странных файлов на своей машине, это безвредно, и вам, вероятно, не следует беспокоиться о его существовании. Вы можете изменить свой VBScript, чтобы назвать его более узнаваемым, если хотите.

person tchakravarty    schedule 28.05.2016
comment
Спасибо за ответ. Приложение не запускается при изменении моего vbs на Randomize CreateObject("Wscript.Shell").Run "R-Portable\App\R-Portable\bin\R.exe Rscript --vanilla --slave runShinyApp.R" & " " & RND & " ", 0, False Причина, по которой я хочу избавиться от этого файла, заключается в том, что я пытаюсь создать файл .exe для запуска этого vbs, а это невозможно, когда каждый раз создается новый файл. Есть ли у вас какие-либо мысли по этому поводу? - person Kivis; 06.06.2016
comment
@Ivona Не R-Portable\App\R-Portable\bin\R.exe Rscript, а R-Portable\App\R-Portable\bin\Rscript.exe. - person tchakravarty; 06.06.2016
comment
Теперь мой run.vs: Randomize CreateObject("Wscript.Shell").Run "R-Portable\App\R-Portable\bin\Rscript.exe CMD BATCH --vanilla --slave runShinyApp.R" & " " & RND & " ", 0, False файл не создается и приложение тоже не запускается. - person Kivis; 06.06.2016
comment
@Ivona Исключите CMD BATCH --vanilla --slave. Это не параметры, которые Rscript принимает. - person tchakravarty; 06.06.2016
comment
Он работает, и мне удалось развернуть свое приложение как .exe и создать средство запуска Windows. Большое спасибо, что нашли время изучить это и помочь мне решить эту проблему, которая беспокоила меня в течение нескольких недель! - person Kivis; 07.06.2016
comment
Я также попытался развернуть приложение R с использованием новой платформы в соответствии с oddhypothesis.blogspot.com/ 2016/04/desktop-deployr.html — имеет ряд преимуществ перед первым. И я получаю ту же проблему, описанную здесь в последнем комментарии. Возможно, у вас есть идеи, как это исправить? - person Kivis; 08.06.2016
comment
@Ivona Мое предложение состояло в том, чтобы создать новый вопрос с теми же подробностями, что и в GH, и я посмотрю. Я думаю, что основная трудность при ответе на эти вопросы заключается в том, что ничто из этого не очень воспроизводимо, поскольку все это очень зависит от платформы. - person tchakravarty; 08.06.2016
comment
Спасибо, я создал новый вопрос здесь - person Kivis; 08.06.2016