Определить состояние отсутствия общего доступа между ячейками R/Python или ячейками Python/Python в RMarkdown
Я пытаюсь получить Reticulate
работает в RMarkdown
согласно инструкции по установке. Тем не менее, я не могу разделить состояние между отдельными ячейками Python или ячейками Python и R, поскольку документы указывают, что я должен быть в состоянии. Вот мои настройки и вывод:
Ячейка 1 (настройка):
{r}
library(reticulate)
path_to_python <- "/Users/User/anaconda3/bin/python"
use_python(path_to_python)
knitr::knit_engines$set(python = reticulate::eng_python)
py_available(initialize = TRUE)
Выход:
[1] TRUE
Ячейка 2 (установить переменную в Python):
{python}
x = 2
Ячейка 3 (попытка доступа к переменной Python в R):
{r}
py$x
Выход:
Error in py_get_attr_impl(x, name, silent) : AttributeError: module '__main__' has no attribute 'x'
Ячейка 4 (установите переменную в R):
{r}
x <- 2
Ячейка 5 (попытка доступа к переменной R в Python):
{python}
r.x
Выход:
Traceback (most recent call last):
File "/var/folders/2b/dgy6vs4n3lbfy2xqwc3gqq9m0000gn/T/RtmpTqIR6P/chunk-code-108b44104ec28.txt", line 1, in <module> r.x NameError: name 'r' is not defined
Ячейка 6 (попытка доступа к предыдущей переменной Python в следующей ячейке Python):
{python}
x
Выход:
Traceback (most recent call last):
File "/var/folders/2b/dgy6vs4n3lbfy2xqwc3gqq9m0000gn/T/RtmpTqIR6P/chunk-code-108b44520d158.txt", line 1, in <module> x NameError: name 'x' is not defined
Любая помощь или совет будет высоко ценится! Я уже пытался указать reticulate
в разных средах Conda и Python без удачи. Спасибо!
1 ответ
Я думаю, что я понял это. Я неправильно понял сетчатую документацию, полагая, что я могу совместно использовать состояние между ячейками Python в RStudio. После изучения открытых вопросов на Github, кажется, что интеграция RStudio все еще продолжается. При непосредственном использовании knitr для вязки документа я получаю ожидаемое поведение с общим состоянием между ячейками.
Это исправлено в текущем RStudio, например 1.2.1114
, Но если вы, как и я, застряли с RStudio Server Pro 1.1.456, обходной путь должен использовать reticulate::repl_python()
запускать фрагменты Python, копируя их в консоль Python. Вы можете снова закрыть и открыть консоль, если вам нужно запустить чанк R между ними - состояние будет поддерживаться. Когда вы закончите взламывать, вы можете без проблем вязать весь файл.