Исполняемый Rscript для Windows не передает команды через вызов system () - PullRequest
0 голосов
/ 31 октября 2019

У меня есть скрипт, который создает список файлов внутри папки, а затем открывает пакет программного обеспечения для анализа этих файлов. Это делается с помощью команды system (), которая открывает файл bat, меняет каталог и вызывает функцию с необходимыми аргументами.

Сам скрипт отлично работает в R studio. Однако я хочу перетащить копию скрипта в папку, дважды щелкнуть по нему и позволить ему сделать свое дело.

Я начал с привязки файлов .Rexec к Rscript.exe с помощью учебника, который вы можете найти. через гугл. Основные шаги:

1) Within the command line, type first:

ASSOC .Rexec=RScriptExecutable
… then …

2) FTYPE RScriptExecutable=C:Program FilesRR-3.1.2binx64Rscript.exe %1 %*

… while making sure that the path used above really leads to your most recent/preferred RScript.exe.

Оттуда я сохранил скрипт в виде файла .Rexec и сделал его снимок. Исходный файл CEL_FILE.txt создается, как ожидается, и открывается программа apt-vars.bat. Но это так далеко, как это возможно. Он не меняет каталог и не запускает функцию, как ожидалось.

Может быть подсказка в том, что при запуске сценария в Rstudio не открывается консоль CMD, все записывается в консоль R Studio. ,Запуск .Rexec, однако, открывает окно cmd для APT.

Создание журнала в скрипте R привело к пустому файлу, использование пакетного файла для вызова скрипта приводит к тому же поведению и усложняет то, что я пытаюсьделать дальше.

Кто-нибудь имеет опыт работы с чем-то вроде этого?

Мой код:

#!/usr/bin/env Rscript
#set apt location
apt_cnvrt <- "C:/Program Files/Thermo Fisher Scientific/Affymetrix Power Tools/APT-1.20.5/bin/apt-vars.bat"
#convert path format
apt_cnvrt <- gsub("/", "\\\\", apt_cnvrt)
#get short path
apt_cnvrt <- shortPathName(apt_cnvrt)
#store wd
outdir <- getwd()
#create file with list of files in dir
cel_list <- list.files(path = outdir, full.names = F, pattern = ".CEL")
fileConn<-file(paste0(outdir,"/CEL_FILE.txt"))
writeLines(c("cel_files", cel_list), fileConn)
close(fileConn)
#convert path format
outdir <- gsub("/", "\\\\", outdir)
#get short path
outdir <- shortPathName(outdir)
#set apt command
command <- "apt-cel-convert.exe --f text --i --cel-files CEL_FILE.txt"
#combine into system command
system(sprintf("\"%s\" && cd \"%s\" && %s", apt_cnvrt, outdir, command))

Для действительно преданных, программное обеспечение APT можно найти здесь: APT

...