Run Python in RMarkdown

Knitr setting for rmarkdown export

  • library(reticulate)
  • py_config: see current python version
  • use_virtualenv(“py39bert”)
  • Enable knit_engine to use python for rmarkdown export purpose
  • knitr::knit_engines$set(python = reticulate::eng_python)
library(reticulate)
py_home <- py_config()
use_virtualenv(py_home$virtualenv)
knitr::knit_engines$set(python = reticulate::eng_python)

Install Python 3.9 on Ubuntu

  1. Check Ubuntu version

    lsb_release -a
  2. Update packages

    sudo apt update
    sudo apt -y upgrade
  3. Install python 3.9

    sudo apt install python3.9
    python3 -V
    python3.9 -V
  4. Install pip

    python3.9 -m pip install --upgrade pip
  5. Install virtualenv

    pip3 install virtualenv
    which virtualenv
  6. Create a virtualenv using Python 3.9 named as py39bert

    which python3.9
    virtualenv -p /usr/bin/python3.9 py39bert
  7. Activate the virtualenv

    source ~/py39bert/bin/activate
  8. Install ipython and jupyter notebook within virtualenv

    pip3 install ipython
    pip3 install jupyter notebook
    jupyter notebook to start jupyter notebook
  9. Install python packages within the virtualenv

    pip3 install numpy

Install Python packages within R

  • Run python module within R

[1] “/home/ghowoo”

[1] “flowchart.Rmd” “data_manipulation.Rmd”

Read feather in Python

[‘flowchart.Rmd’, ‘data_manipulation.Rmd’, ‘discretization.Rmd’, ‘graph.Rmd’]

0 1 A
1 2 A
2 3 A
3 4 A
4 5 A
5 6 A

Python Version

sys.version_info(major=3, minor=9, micro=12, releaselevel=‘final’, serial=0)

R sessionInfo()

R version 4.1.2 (2021-11-01) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 20.04.3 LTS

Matrix products: default BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0 LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0

locale: [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8
[4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8
[7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C

attached base packages: [1] stats graphics grDevices utils datasets methods base

other attached packages: [1] feather_0.3.5 reticulate_1.24 Wu_0.0.0.9000
[4] flexdashboard_0.5.2 lme4_1.1-27.1 Matrix_1.4-0
[7] mgcv_1.8-38 nlme_3.1-152 png_0.1-7
[10] scales_1.1.1 nnet_7.3-16 labelled_2.8.0
[13] kableExtra_1.3.4 plotly_4.9.4.1 gridExtra_2.3
[16] ggplot2_3.3.5 DT_0.18 tableone_0.13.0
[19] magrittr_2.0.1 lubridate_1.7.10 dplyr_1.0.7
[22] plyr_1.8.6 data.table_1.14.0 rmdformats_1.0.2
[25] knitr_1.36

loaded via a namespace (and not attached): [1] httr_1.4.2 sass_0.4.0 tidyr_1.1.3 jsonlite_1.7.2
[5] viridisLite_0.4.0 splines_4.1.2 here_1.0.1 bslib_0.2.5.1
[9] highr_0.9 yaml_2.2.1 pillar_1.6.4 lattice_0.20-45
[13] glue_1.5.1 digest_0.6.29 rvest_1.0.0 minqa_1.2.4
[17] colorspace_2.0-2 htmltools_0.5.2 survey_4.0 pkgconfig_2.0.3
[21] haven_2.4.1 bookdown_0.22 purrr_0.3.4 webshot_0.5.2
[25] svglite_2.0.0 tibble_3.1.6 generics_0.1.0 ellipsis_0.3.2
[29] withr_2.4.3 lazyeval_0.2.2 survival_3.2-13 crayon_1.4.2
[33] evaluate_0.14 fansi_0.5.0 MASS_7.3-54 forcats_0.5.1
[37] xml2_1.3.3 tools_4.1.2 hms_1.1.0 mitools_2.4
[41] lifecycle_1.0.1 stringr_1.4.0 munsell_0.5.0 compiler_4.1.2
[45] jquerylib_0.1.4 systemfonts_1.0.2 rlang_0.4.12 grid_4.1.2
[49] nloptr_1.2.2.2 rstudioapi_0.13 rappdirs_0.3.3 htmlwidgets_1.5.4 [53] rmarkdown_2.10 boot_1.3-28 gtable_0.3.0 DBI_1.1.1
[57] R6_2.5.0 fastmap_1.1.0 utf8_1.2.2 rprojroot_2.0.2
[61] stringi_1.7.6 Rcpp_1.0.7 vctrs_0.3.8 tidyselect_1.1.1 [65] xfun_0.28