Исходный код R в Python, передавая DataFrame в этот код R - PullRequest
0 голосов
/ 11 марта 2019

Я хочу вызвать уже написанный R-код из Python (путем его получения), но хочу передать DataFrame из Python в этот R-код.

Я приведу очень простой пример с данными, которые дают две переменные var1 и var2.

Например, пусть это будет мой код R для вычисления взвешенного среднего значения (сохраненного в той же папке, что и Rcode.R):

result <- weighted.mean(r_df$var1, r_df$var2, na.rm = TRUE)

В Python я загружаю все соответствующие модули и подготавливаю DataFrame:

import rpy2.robjects as ro
from rpy2.robjects import pandas2ri
pandas2ri.activate()
import pandas as pd
df = pd.DataFrame({"var1": [5, 4, 8, 6, 10], "var2": [1.3, 1.2, 1, 1.5, 0.8]})

Я уже узнал, что этот фрейм данных можно преобразовать в фрейм данных R:

r_df = pandas2ri.py2ri(df)

Теперь я хочу получить свой код R:

r_source = ro.r("source")
r_source("Rcode.R")

Но получите сообщение об ошибке:

RRuntimeError: Error in weighted.mean(r_df$var1, r_df$var2, na.rm = TRUE) : object 'r_df' not found

Есть ли способ получить код R и указать R использовать фрейм данных, созданный в Python? Мне известны решения по использованию R-выражения / R-кода непосредственно в Python, но в моем случае я использую существующий R-скрипт, который слишком сложен для «перевода» на Python.

Спасибо за вашу помощь.

...