在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
中定义相对路径,以使功能与Notebook本身分离?
答案 0 :(得分:2)
如果我正确阅读了您的问题,则可以使用相对路径。
注意:但是,我不确定您是否正在寻找与here
库相同的库。我没有看到与之等效的东西,但是相对路径确实有效。
请参阅:
https://docs.azuredatabricks.net/user-guide/notebooks/notebook-use.html#link-to-other-notebooks
您可以使用%run <notebook>
magic命令从另一个笔记本运行一个笔记本。这大致等效于本地计算机上Scala REPL中的:load命令或Python中的import语句。定义的所有变量在您当前的笔记本中可用。
%run必须单独位于一个单元格中,因为它可以内联运行整个笔记本。
注意您不能使用%run运行Python文件并导入实体 该文件中定义的内容放入笔记本中。要从Python文件导入 必须将文件打包到Python库中,创建一个Azure 该Python库中的数据块library和install the library into the cluster用于运行笔记本。
假设您有笔记本A和笔记本B。 notebookA包含一个具有以下Python代码的单元格:
x = 5
即使您没有在NotebookB中定义x,也可以在运行%run 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
有关笔记本之间更复杂的交互,请参见Notebook Workflows。