Как я могу вызвать код R от Anaconda Spyder (python)? - PullRequest
1 голос
/ 10 марта 2019

У меня есть алгоритм математической оптимизации в Python, и каждый раз, когда мне нужно оценить значение функции, я должен вызывать R-скрипт, где написан код моделирования (оптимизация на основе моделирования). Прежде чем пытаться связать эти два кода, я хотел бы понять, как связать что-то проще. Давайте представим, что у меня есть маленький скрипт R:

x <- c(1,2,3,4,5,6)
y <- c(2,3,4,54)
x1 <- mean(x)
y1 <- mean(y)
z <- x1 + y1
print(z)

Я хочу позвонить ему из Spyder (Anaconda), чтобы z отображалось на моей консоли. Я читал о библиотеке rpy2, но, как я понял (поправьте меня, если я ошибаюсь), я должен написать эквивалентный код R на Python. Кто-нибудь знает о более простом способе сделать это? (Я не могу очень хорошо кодировать в R, поэтому я не смогу перевести код симуляции, который у меня есть). При необходимости R устанавливается в среде Windows, как Anaconda. Заранее спасибо!

1 Ответ

0 голосов
/ 10 марта 2019

После нескольких других попыток подпроцесс, похоже, работал достаточно хорошо.Вы можете запустить R-скрипт из Python через подпроцесс и предоставить значение функции в качестве аргумента (x):

def R_script_runner(x):
    import subprocess
    output=subprocess.run(
            ["your_path_to_R_source_folder/Rscript.exe",  "your_path_to_R_script/R_script.R", x], 
                                  shell=True, stdin=subprocess.PIPE,
                                  stdout=subprocess.PIPE,
                                  stderr=subprocess.PIPE).stderr 
    return output  

R-скрипт будет делать то, что должен делать.Вывод возвращается функцией в основном для отладки, так что вы можете распечатать ее или оценить иначе.

...