我在过去的研究中留下了一些 R 代码。它不是很快,但它确实有效。Julia 慷慨地允许将整个迁移过程推迟到以后,通过 Rcall 使用这个 R 代码,这非常方便。最近,我决定使用 Pluto 准备一个交互式演示,其中在一个地方使用了通过 Rcall 插入 R 代码。在第一次启动时,如果只打开笔记本,一切正常,但如果更改此代码块中的任何内容并重新计算,Pluto 会返回如下错误:
cannot assign a value to variable workspace407.b from module workspace408
即使使用最简单的代码也会出现此错误,因此问题不是R代码中的错误,而是使用此代码更新单元格时的环境之间的关系。如果直接从 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 将给出错误。如何解决这个问题呢?