Запустить R-скрипт в Python, используя данные из Python в R-скрипте (rpy2) - PullRequest
0 голосов
/ 04 декабря 2018

Я хочу запустить скрипт R на python, используя rpy2 , я уже знаю, как это сделать

Код R:

dataR = data.frame( Ingresos = c(23,45,24,23,54),
                    Bonos = c(23,45,12,67,54),
                    Deuda = c(23,4,1,6,3),
                    row.names = c("Nathy", "Tomas", "Joe", "Emily", "Javi") )
dataR
promedio_ingresos = mean(dataR$Ingresos)
Max_Ing = sort(dataR$Ingresos[dataR$Ingresos>promedio_ingresos])
Max_Ing

Для запускаэтот скрипт R на Python я использую:

import rpy2
from rpy2.robjects.packages import importr
import rpy2.robjects as robjects
r = robjects.r
output = r.source("R_script_run_in_python.R")
output

И вывод получает последнее значение из моего кода R

Теперь я хочу запустить тот же код, но с использованием данных, которые я определяю вPython, например:

import pandas as pd
df = pd.DataFrame( np.random.randn(5,3), 
                   columns = ["Ingresos","Bonos","Deuda"], 
                   index = ["Max", "Nathy", "Tom", "Joe", "Kathy"] )

Итак, код R, который я хочу запустить сейчас, просто:

promedio_ingresos = mean(dataR$Ingresos)
Max_Ing = sort(dataR$Ingresos[dataR$Ingresos>promedio_ingresos])
Max_Ing

Но dataR, будучи df, как я могу это сделать?

1 Ответ

0 голосов
/ 05 декабря 2018

Я попробовал это, и это сработало

# Data    
# Pandas dataframe
df = pd.DataFrame( np.random.randn(5,3),
                   columns = ["Ingresos","Bonos","Deuda"],
                   index = ["Max", "Nathy", "Tom", "Joe", "Kathy"] )   
# rpy2 datframe
dataR = pandas2ri.py2ri(df)

# R code
robjects.globalenv["dataR"] = dataR
robjects.r('''
           promedio_ingresos = mean(dataR$Ingresos)
           Max_Ing = sort(dataR$Ingresos[dataR$Ingresos>promedio_ingresos])
''')
print(robjects.globalenv["dataR"])
print(robjects.globalenv["promedio_ingresos"])
print(robjects.globalenv["Max_Ing"])
...