Запуск сценария R из командной строки (для выполнения с python)

В настоящее время я пытаюсь запустить R-скрипт из командной строки (моя конечная цель – выполнить его как последнюю строку скрипта python). Я не уверен, что такое командный файл, или как сделать исполняемый файл R-скрипта. В настоящее время он сохраняется как .R-файл. Он работает, когда я запускаю его из R.
Как это выполнить из строки командной строки Windows? Нужно ли загружать что-то под названием Rscript.exe? Я просто сохраняю свой R-скрипт как .exe-файл? Просьба сообщить о самом простом способе достижения этого.
R: версия 3.3 python: версия 3.x os: windows

Вероятно, у вас уже есть R, так как вы уже можете запустить свой скрипт.

Все, что вам нужно сделать, это найти его двоичные файлы (файл Rscript.exe).

Затем откройте командную строку Windows ([cmd] + [R]> введите: "cmd"> [enter])

Введите полный путь к R.exe, а затем полный путь к вашему скрипту.

Как уже упоминалось, Rscript.exe автоматизированный исполняемый файл для запуска R-скриптов поставляется с любой установкой R (обычно находится в папке bin), а упоминания @Dirk Eddelbuettel – рекомендуемая автоматическая версия. И в Python вы можете запускать любую внешнюю программу в качестве подпроцесса с различными типами, включая вызов , check_output , check_call или Popen , а последний из них предоставляет больше возможностей, таких как захват ошибок в дочернем процессе.

Если каталог R находится в вашей переменной окружения PATH , вам не нужно включать полный путь к RScript.exe, а только имя программы, Rscript . И обратите внимание, что это довольно простой процесс для операционных систем Linux или Mac.

 command = 'C:/R-3.3/bin/Rscript.exe' # OR command = 'Rscript' path2script = 'C:/Path/To/R/Script.R' arg = '--vanilla' # CHECK_CALL VERSION retval = subprocess.check_call([command, arg, path2script], shell=True) # CALL VERSION retval = subprocess.call(["'Rscript' 'C:/Path/To/R/Script.R'"]) # POPEN VERSION (W/ CWD AND OUTPUT/ERROR CAPTURE) curdir = 'C:/Path/To/R/Script' p = subprocess.Popen(['Rscript', 'Script.R'], cwd=curdir, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE) output, error = p.communicate() if p.returncode == 0: print('R OUTPUT:\n {0}'.format(output.decode("utf-8"))) else: print('R ERROR:\n {0}'.format(error.decode("utf-8"))) 

У вас уже есть Rscript , он поставляется с вашей версией R. Если R.exe , Rgui.exe , … находятся на вашем пути, то это также Rscript.exe .

Ваш звонок из Python может быть только Rscript myFile.R . Rscript намного лучше, чем R BATCH CMD ... и другие очень старые и устаревшие шаблоны использования.