Я пытаюсь использовать встроенный индикатор выполнения R (txtProgressBar
) с магией %%R
в Jupyter. Несмотря на то, что он создает красивую анимацию при выполнении в консоли R или RStudio, он не производит желаемого результата в Jupyter (ноутбуке или лаборатории) с расширением rpy2 вместо этого, печатая все шаги сразу после завершения (что делает прогресс бар бесполезен). Два вопроса:
- Как я мог заставить его работать?
- Если это пока невозможно, как мне реализовать эту функциональность на стороне rpy2 (я уже знаю, как сделать интерактивный вывод/виджеты на стороне Jupyter/IPython)?
Вот простой фрагмент индикатора выполнения с сайта rfunction.com:
%%R
SEQ <- seq(1,100)
pb <- txtProgressBar(1, 100, style=3)
TIME <- Sys.time()
for(i in SEQ){
Sys.sleep(0.02)
setTxtProgressBar(pb, i)
}
Для новичков в rpy2
: его нужно установить с pip install rpy2
, а магию нужно загрузить в Jupyter с %load_ext rpy2.ipython
.
Редактировать: Обходной путь, который я использую на данный момент, заключается в ручном вызове кода через robjects.r
:
from rpy2.robjects import r
r("""
SEQ <- seq(1,100)
pb <- txtProgressBar(1, 100, style=3)
TIME <- Sys.time()
for(i in SEQ){
Sys.sleep(0.02)
setTxtProgressBar(pb, i)
}
""")
однако это не идеально - я бы предпочел сохранить все преимущества Rmagic rpy2.