Определить состояние отсутствия общего доступа между ячейками 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 между ними - состояние будет поддерживаться. Когда вы закончите взламывать, вы можете без проблем вязать весь файл.

Другие вопросы по тегам