Записать предупреждающее сообщение в библиотеке R от Python, используя rpy2 - PullRequest
0 голосов
/ 03 мая 2020

Я хотел бы записать предупреждение в 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. Могу ли я получить ваши предложения по решению этой проблемы? Мне действительно нужно захватить такие предупреждающие сообщения. Большое спасибо.

...