Ответ 1
Вы можете использовать этот пакет PythonInR
Я ищу способ вызова python внутри R в операционной системе Windows. Поскольку для этого не существует легкодоступного пакета R (по крайней мере, пакет, который недавно обновлялся), я ищу выводы о том, как написать набор команд в R script, которые затем могут быть отправлены в пакетном режиме режим для python.
Короче говоря, как я могу вызвать python из R в ОС Windows?
Изменить: Чтобы уточнить, я не спрашиваю о вызове R из python; скорее я прошу о вызове python из R.
Обновление. Основываясь на том, что я собрал до сих пор, вот базовый набор команд для запуска python из R в ОС Windows:
# (1) basic python commands called from R
system('python -c "a = 2 + 2; print a"')
system('python -c "a = \'hello world\' ; print a; import pandas"')
# (2) if you have a python file you've already created (which I've referred to as "my.py"), then you can run it in R as follows:
system("python C:\\Users\\Name\\Desktop\\my.py")
# or alternatively:
system('python -c "import sys; sys.path.append(\'C:\\Users\\Name\\Desktop\'); import my;"')
Ни один из этих подходов не находится на уровне интерактивности, необходимой для анализа данных флюидов с использованием python в R на ОС Windows. Наиболее простым решением может быть написать простую функцию R, которая (1) экспортирует указанный R-кадр данных в python, (2) анализирует синтаксис python, написанный в R (используя stringr
и system('python -c')
), а затем (3) опционально экспортирует данные обратно в R. Это будет псевдо-интерактивность в R на основе обновления временного файла python через консоль R.
Вы можете использовать этот пакет PythonInR
Сделайте файл python....
# -*- coding: utf-8 -*-
"""
Created on Wed Mar 9 09:55:46 2016
@author: Subhash Jaini
"""
import pandas as pd
d = {'First' : [1., 2., 3.],'Second' : [1,2,3]}
AA = pd.DataFrame(d)
print(AA)
сохранить его в место (я использовал c:/deleteme/pythonRun.py)
В R запустите этот код.
#calls the python script to run in shell
BlobReturnedFromPython = shell('python c:/deleteme/pythonRun.py',intern=TRUE)
#get the first line and turn it to your header
HEADER = gsub(" ","",unlist(strsplit(as.character(BlobReturnedFromPython[1])," ")))[-1]
#all the rest of the data is non header data
NONHEADER = BlobReturnedFromPython[2:(length(BlobReturnedFromPython)-1)]
#turnthat blob (which is seperated by about 4 spaces )
DATA = data.frame(sapply(NONHEADER,function(x){unlist(strsplit(x," "))}))
#brings those names into the data set
names(DATA) <- HEADER
DATA
Я нашел решение, которое может работать на ОС Windows:
http://gallery.rcpp.org/articles/rcpp-python/
В статье описывается настройка для Ubuntu, где Rcpp используется как промежуточный уровень между R и Python. Хотя я еще не пробовал этого, в настоящее время я не вижу причин, почему это решение не должно работать и с Windows.
Если вы ищете вызов python из R, попробуйте rPython, но это не для ОС Windows. Или попробуйте RSPython имеет слабую поддержку для окон. Другая полезная ссылка .
Наконец, вы можете попытаться использовать что-то вроде Cygwin для выполнения приложения linux в ОС Windows. Больше рабочей нагрузки будет использовать некоторые виртуальные среды, такие как VMware или VirtualBox в Windows и установить Linux и выполнить свою работу.