首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在数据库中使用R笔记本中的相对路径?

如何在数据库中使用R笔记本中的相对路径?
EN

Stack Overflow用户
提问于 2019-07-04 13:26:06
回答 1查看 2.8K关注 0票数 3

R中工作时,我通常将函数存储在文件夹./R/

为了将这些函数带到工作区,我求助于here::here()函数。对于一个小脚本,我的代码开始如下:

代码语言:javascript
复制
library(here)
source(here::here("R", "custom_function1.R"))
source(here::here("R", "custom_function2.R"))

这样,在同事之间共享项目是非常简单的。

我在一个项目中使用Azure-Databricks Notebooks。当使用here::here()时,函数指向服务器。

是否有一种方法可以在Azure-Databricks Notebooks中定义相对路径以保持函数与笔记本本身的解耦?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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包含一个单元格,其代码如下:

代码语言:javascript
复制
x = 5

即使您没有在notebookB中定义x,您也可以在运行%运行notebookA之后在notebookB中访问x。

代码语言:javascript
复制
%run /Users/path/to/notebookA
print(x) # => 5

相对路径

若要指定相对路径,请在其前面加上./或../。例如,如果notebookA和notebookB位于同一个目录中,则可以从相对路径运行它们。

代码语言:javascript
复制
%run ./notebookA
print(x) # => 5

因此

代码语言:javascript
复制
%run ../someDirectory/notebookA # up a directory and into another    
print(x) # => 5

有关笔记本之间更复杂的交互,请参见笔记本工作流程

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56889000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档