在R中工作时,我通常将函数存储在文件夹./R/中
为了将这些函数带到工作区,我求助于here::here()函数。对于一个小脚本,我的代码开始如下:
library(here)
source(here::here("R", "custom_function1.R"))
source(here::here("R", "custom_function2.R"))这样,在同事之间共享项目是非常简单的。
我在一个项目中使用Azure-Databricks Notebooks。当使用here::here()时,函数指向服务器。
是否有一种方法可以在Azure-Databricks Notebooks中定义相对路径以保持函数与笔记本本身的解耦?
发布于 2019-07-09 15:50:50
如果我正确地阅读了你的问题,你可以使用相对路径。
注意:不过,我不确定您是否在寻找一个与here库相当的库。我还没有看到类似的结果,但相对路径确实有效。
请参见:
https://docs.azuredatabricks.net/user-guide/notebooks/notebook-use.html#link-to-other-notebooks
从另一个笔记本上运行一个笔记本
您可以使用%run <notebook>魔术命令从另一个笔记本上运行笔记本。这大致相当于本地计算机上Scala中的:load命令或Python中的import语句。定义的所有变量都可以在当前笔记本中使用。
%run本身必须位于单元格中,因为它可以内联运行整个笔记本。
注意:不能使用%run运行Python文件并将该文件中定义的实体导入到笔记本中。要从Python文件中导入,必须将该文件打包到Python库中,从该Python库创建一个Azure 图书馆,并使用将库安装到集群中运行您的笔记本。
示例
假设您有notebookA和notebookB。notebookA包含一个单元格,其代码如下:
x = 5即使您没有在notebookB中定义x,您也可以在运行%运行notebookA之后在notebookB中访问x。
%run /Users/path/to/notebookA
print(x) # => 5相对路径
若要指定相对路径,请在其前面加上./或../。例如,如果notebookA和notebookB位于同一个目录中,则可以从相对路径运行它们。
%run ./notebookA
print(x) # => 5因此
%run ../someDirectory/notebookA # up a directory and into another
print(x) # => 5有关笔记本之间更复杂的交互,请参见笔记本工作流程。
https://stackoverflow.com/questions/56889000
复制相似问题