如何从另一个Jupyter笔记本文件中获取R代码?

时间:2020-09-29 15:13:20

标签: r jupyter-notebook jupyter jupyter-lab jupyter-irkernel

我不熟悉使用具有 R内核的Jupyter笔记本。

我在两个文件Settings.ipynbMain_data.ipynb中编写了R代码。

我的Settings.ipynb文件有很多详细信息。我在下面显示示例详细信息

Schema = "dist"
resultsSchema = "results"
sourceName = "hos"
dbms = "postgresql" #Should be "sql server", "oracle", "postgresql" or "redshift"

user <- "hos"
pw <- "hos"
server <- "localhost/hos"
port <- "9763"

我想从Settings代码文件中获取Main_data文件。

当我使用R studio时,很容易,因为我只使用以下内容

 source('Settings.R')

但是现在在Main_data具有R内核的Jupyter Notebook中,当我编写下面的代码时

 source('Settings.R')  # settings file is in same directory as main_data file

我收到以下错误

Error in source("Settings.R"): Settings.R:2:11: unexpected '['
1: {
2:  "cells": [
             ^
Traceback:

1. source("Settings.R")

尝试以下操作时,出现另一个错误,如下所示

source('Settings.ipynb')

Error in source("Settings.ipynb"): Settings.ipynb:2:11: unexpected '['
1: {
2:  "cells": [
             ^
Traceback:

1. source("Settings.ipynb")

如何获取R code以及保存它的正确方法是什么(在Jupyter笔记本(使用R内核)中为.ipynb.R格式)。你能帮我吗?

更新的屏幕截图

strong text

2 个答案:

答案 0 :(得分:2)

我们可以在相同的工作目录(或不同的工作目录)中创建一个.INI文件,然后使用ConfigParser解析所有元素。 .INI文件为

Settings.INI

[settings-info]
schema = dist
resultsSchema = results
sourceName = hos
dbms = postgresql

user = hos
pw = hos
server = localhost/hos

然后,我们初始化一个解析器对象,从文件中读取内容。我们可以有多个子标题(此处仅是“ settings-info”),并使用[[$

提取组件
library(ConfigParser)
props <- ConfigParser$new()
props <- props$read("Settings.INI")$data
props[["settings-info"]]$schema

从Jupyter笔记本中

enter image description here

“ Settings.INI”文件

enter image description here

答案 1 :(得分:1)

尝试以.R格式保存Jupyter笔记本文件将不起作用,因为该格式有些混乱(由于存在{ "cells" : [...."之类的东西。您可以通过打开{ Jupyter Notebook中的{1}}文件。

但是,您可以使用vim编辑器/ R studio创建.R文件。这样一来,您就可以按原样使用内容,而不会遇到诸如.R之类的任何格式问题。

后来从另一个jupyter笔记本上,您可以导入/获取使用vim编辑器/ R studio创建的{ "cells" : [...."文件。这为我解决了这个问题。

总而言之,请勿使用jupyter笔记本创建.R文件并使用另一个jupyter笔记本文件来获取它们。