Я хотел бы записать предупреждение в R и сохранить в виде строки в Python. Моя проблема началась с выборки данных о заболевании в pandas фрейме данных следующим образом:
dates = ["2020-01-01", "2020-01-02", "2020-01-03", "2020-01-04", "2020-01-05",
"2020-01-06", "2020-01-07", "2020-01-08", "2020-01-09", "2020-01-10"]
cases = [0, 0, 0, 0, 0, 0, 0, 1, 0, 0]
df = pd.DataFrame({"dates": dates, "cases": cases})
Чтобы оценить количество воспроизведения этого заболевания, я сохраняю этот pandas фрейм данных в файл csv, затем использую библиотеку R называется ЭпиЭстим. Мой код R выглядит следующим образом.
library(EpiEstim)
disease <- read.csv(file="df.csv")
res_parametric_si <- estimate_R(disease$cases,
method="parametric_si",
config=make_config(list(mean_si=5, std_si=1)))
Так как число случаев очень редко в день. EpiEstim выдает предупреждающее сообщение:
Default config will estimate R on weekly sliding windows.
To change this change the t_start and t_end arguments.
Warning message:
In estimate_R_func(incid = incid, method = method, si_sample = si_sample, :
You're estimating R too
Поскольку мой конвейер данных представляет собой среду Python, я вызвал EpiEstim из Python, используя rpy2. Мой код выглядит следующим образом.
import pandas as pd
from rpy2.robjects.packages import importr
from rpy2.robjects import pandas2ri
pandas2ri.activate()
dates = ["2020-01-01", "2020-01-02", "2020-01-03", "2020-01-04", "2020-01-05",
"2020-01-06", "2020-01-07", "2020-01-08", "2020-01-09", "2020-01-10"]
cases = [0, 0, 0, 0, 0, 0, 0, 1, 0, 0]
df = pd.DataFrame({"dates": dates, "cases": cases})
eps = importr("EpiEstim")
rdf = pandas2ri.py2ri(df)
results = eps.estimate_R(rdf[1], method="parametric_si", config=eps.make_config(mean_si=5, std_si=1))
results = dict(results.items())
rhat = pandas2ri.ri2py(results["R"])
Все работает хорошо, за исключением того, что я не смог перехватить предупреждение, появившееся в среде R. Могу ли я получить ваши предложения по решению этой проблемы? Мне действительно нужно захватить такие предупреждающие сообщения. Большое спасибо.