convert_ipynb: Convert a Jupyter/IPython notebook to an R Markdown document

View source: R/jupyter.R

convert_ipynbR Documentation

Convert a Jupyter/IPython notebook to an R Markdown document

Description

Read a Jupyter/IPython notebook file (‘.ipynb’) via jsonlite::fromJSON(), convert its code cells to R Markdown code chunks, preserve Markdown cells, and write out the results to an Rmd file.

Usage

convert_ipynb(input, output = xfun::with_ext(input, "Rmd"))

Arguments

input

Path to the input ‘.ipynb’ file.

output

The output file path.

Details

This simple converter may have some rough edges, depending on how many IPython-specific features are used in a notebook. For example, line magics are not automatically converted (warnings will be issued if line magics are detected), but you may consider using or writing R functions to replace them in R Markdown (e.g., the %load magic may be replaced by reticulate::source_python()). Cell magics will be converted to code chunks with the (knitr) language engine names being the magic names. For example, the cell magic %%js is converted to ⁠```{js}⁠ in R Markdown. This does not always work because not all IPython cell magics have their counterparts in knitr's language engines, but common cell magics like %%bash, %%sh, %%js, %%perl, %%python, and %%ruby should work.

Value

The output file path (invisibly).

Examples

# this is not a real ipynb file, but illustrates what convert_ipynb() does
nb_data <- list(
  cells = list(
    list(cell_type = 'markdown', source = 'Hi **Markdown**!'),
    list(cell_type = 'code', source = 'print("Hi R Markdown!")')
  ),
  metadata = list(
    kernelspec = list(language = 'python')
  )
)
nb_file = tempfile(fileext = '.ipynb')
jsonlite::write_json(nb_data, nb_file, auto_unbox = TRUE, pretty = TRUE)
xfun::file_string(nb_file)  # show file content

# convert to R Markdown
nb_rmd = rmarkdown:::convert_ipynb(nb_file)
xfun::file_string(nb_rmd)

rmarkdown documentation built on Sept. 18, 2023, 5:17 p.m.