Jupyter 中的 R 内核是否有相当于魔法“%run”的东西?

问题描述

这个问题与Is there a way to do Jupyter cell magic with R有些相关。

当您将 JupyterLab 与 Python 内核结合使用时,您可以将分析拆分为多个笔记本,如下所示:

.
├── 01-preprocessing.ipynb
└── 02-analysis.ipynb

然后你可以通过魔法指令启动你的笔记本02-analysis.ipynb

%run 01-preprocessing.ipynb

以便可以检索和继续之前的工作。

我注意到如果这些笔记本是 R 笔记本,这个简单的解决方案就不起作用。相反,您会收到一个错误

Error in parse(text = x,srcfile = src): <text>:1:1: unexpected input
1: %run 01-preprocessing.ipynb
    ^
Traceback:

据我所知,魔术命令不是 Jupyter 环境本身的特性:它只是 Python 内核的特性。但是对于 R 内核是否有任何等价物?或者,作为 R 用户,您有什么办法可以像这样在多个“依赖”笔记本之间拆分您的分析?

谢谢!

解决方法

事实上,IRkernel 中并没有实现魔法。正如维护者 here 所指出的,您可以使用 nbconvert。

run_notebook = function(path) {
    if (!file.exists(path)) {
        stop(paste('No such a file:',path))
    }
    eval(
        parse(
            text = system2(
                'jupyter',c('nbconvert',path,'--to=script','--stdout'),stdout = TRUE
            )
        )
    )
}
run_notebook('01-preprocessing.ipynb')

这在未来可能会变得更容易。有计划实现魔法的替代 R 内核。