Я хочу вызвать уже написанный 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.
Спасибо за вашу помощь.