Проблема с обновлением вставок кода R в Pluto.jl

#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.