#r #julia #pluto.jl
#r #джулия #pluto.jl
Вопрос:
У меня осталось некоторое количество кода в R от моих прошлых исследований. Это не очень быстро, но работает. Джулия великодушно позволяет отложить полный процесс миграции на потом, используя этот R-код через Rcall, это очень удобно. Недавно я решил подготовить одну интерактивную демонстрацию с использованием Pluto и среди прочего в одном месте использовал вставку R-кода через Rcall. При первом запуске, если только открыть notebook, все работает, но если изменить что-либо в этом блоке кода и пересчитать его, Pluto возвращает ошибку, подобную этой:
cannot assign a value to variable workspace407.b from module workspace408
Эта ошибка возникает даже при использовании самого простого кода, поэтому проблема заключается не в ошибке в R-коде, а во взаимосвязи между окружениями при обновлении cell этим кодом. Если запустить этот код непосредственно из Julia, без Pluto, такой проблемы нет. Вот совершенно примитивный пример, демонстрирующий проблему:
begin
a = 2
@rput a
R"""
b = a*2
"""
@rget b
b
end
Чтобы это сработало, using Rcall
должно быть вызвано где-то раньше, и R должен быть установлен и настроен для внешнего запуска. При первом запуске Pluto notebook с этим кодом все работает так, как должно. Но если изменить, например b = a*2
, на b = a*3
и обновить ячейку этим кодом, Pluto выдаст ошибку. Как решить эту проблему?
Комментарии:
1. Возможный обходной путь: используйте
initEmbeddedR
иendEmbeddedR
, чтобы убедиться, что код R в вашем ноутбуке запускается в новом сеансе R.