Ако вашият проект изисква да стартирате R-Script във вашия проект на Python, тогава има лесен начин да го направите.
Локална настройка
За Mac
Изтеглете пакетите от тази линк. Или в случай, че използвате brew, можете просто да използвате следната команда.
brew install r
Проверете инсталацията
Просто изпълнете следната команда, за да проверите инсталацията:
Rscript - version
Забележка: За да стартирате R shell, просто изпълнете командата R на вашия терминал.
Инсталирайте R библиотеки (по избор)
В случай, че ще използвате някоя от R библиотеките, можете просто да отворите R shell и да изпълните командата за инсталиране на пакет. Например:
> install.packages(<library-name>)
Създайте .r файл
Създайте файла ‹your-r-script›.r с вашата логика.
Например, позволете ми да създам скрипт, който приема два аргумента и проверява дали са предадени два аргумента. Ако проверката е неуспешна, скриптът излиза със съобщение за грешка. Ако проверката премине, тя просто отпечатва аргументите.
#! /usr/local/bin/RScript rm(list = ls()) args <- commandArgs(trailingOnly=TRUE) # Check for argument length if (length(args) != 2) { stop("Two arguments must be supplied", call.=FALSE) } print(args[1]) print(args[2])
Стартирайте от python файл
Можем да напишем скрипт на Python, както е споменато по-долу, за да стартираме създадения по-горе R файл.
import subprocess return_code = subprocess.call(['/usr/local/bin/RScript', '--vanilla', '<path-to-your-file>.r', 'args1', 'args2'])
Просто стартирайте горния код, за да изпълните вашия R файл, и в този пример трябва да можете да видите аргументите, предадени като изход в конзолата. Обърнете внимание, че стойността на return_code ще бъде нула в случай на успешно изпълнение и различна от нула в противен случай (например различна от нула в случай, че един аргумент е предаден на R скрипта тук).
Обърнете внимание, че в случай че вашият код може да работи на различни машини, е по-добре да не кодирате твърдо пътя на RScript. По-скоро можем да променим кода, както следва:
import subprocess path = subprocess.run(['which', 'Rscript'], stdout=subprocess.PIPE).stdout.decode('utf-8')[:-1] if path: return_code = subprocess.call([path, '--vanilla', '<path-to-your-file>.r', 'args1', 'args2'])
Разположете този код с помощта на докер
Сега, след като успешно изпълнихме следния код локално, може да има случай на използване на внедряване на такъв код като част от вашия докер образ.
Например, можете да направите следните промени във вашия Dockerfile:
FROM python:3.7-buster # Some code RUN apt-get update && apt-get install -y r-base # In case you wanna install some R library RUN Rscript -e "install.packages('<lib-name>')" # Some code