Upgrade to Pro — share decks privately, control downloads, hide ads and more …



Kazuhiro Maeda

April 06, 2019

More Decks by Kazuhiro Maeda

Other Decks in Technology


  1. 最近のR パッケージ開発事情 最近のR パッケージ開発事情 LINE Fukuoka 株式会社 LINE Fukuoka 株式会社

    前田和寛(Kazuhiro Maeda) 前田和寛(Kazuhiro Maeda) 2019/04/06 2019/04/06
  2. why creating R package? why creating R package?

  3. 「なければ作る」 「なければ作る」 Sometimes, we look for R packages to do

    the processing we want to achieve However, the packages we seek may not exist (If we look for it carefully, it will exist) 「なければ作ればいい」
  4. Procedure of R package dev Procedure of R package dev

    1. Prepare environment for R package-dev 2. Create repository and R-project 3. Write codes, descriptions, documents 4. Build and Testing 5. Deploy 6. Create the information-site of this package
  5. Prepare environment for R Prepare environment for R package-dev package-dev

  6. Applications required for R-package dev Applications required for R-package dev

    git for version control R RStudio IDE for R web browser for access git(github) and check docs
  7. R packages for dev R packages for dev devtools tool-set

    of R package dev roxygen2 useful package for generating/modifying descriptions usethis useful package for creating R package testthat for test rmarkdown for rendering documents pkgdown for creating web-site of this package
  8. Create repository and R- Create repository and R- project project

  9. Prepare R-project Prepare R-project Create R-project Create R-project this one:

  10. Add license Add license If you want to add “MIT”

    license, run this code: usethis::use_mit_license() Another licenses(CC0, GPL, etc …), see .
  11. initialize git initialize git

  12. Prepare git(github) Prepare git(github) Create git repository Create git repository

  13. Copy repository’s url Copy repository’s url Please do not create

    any files at this point.
  14. connect R-package and repository connect R-package and repository Click ‘Terminal’

    tab and run these command: git remote add origin (repository_url) git add . git commit -m "first commit" git push --set-upstream origin master This is a kind of samples.
  15. Write codes, descriptions, Write codes, descriptions, documents documents

  16. Description method using roxygen2 Description method using roxygen2 Concepts Concepts

    The premise of roxygen2 is simple: describe your functions in comments next to their definitions and roxygen2 will process your source code and comments to produce Rd files in the man/ directory. How to write How to write It is a easier way to check this cheat sheet: https://www.rstudio.com/resources/cheatsheets/#package
  17. example example from roxygen2 repository: #' The length of a

    string (in characters). #' #' @param string input character vector #' @return numeric vector giving number of characters in each element of #' character vector. Missing strings have missing length. #' @seealso \code{\link{nchar}} which this function wraps #' @export #' @examples #' str_length(letters) #' str_length(c("i", "like", "programming", NA)) str_length <- function(string) { string <- check_string(string) nc <- nchar(string, allowNA = TRUE) is.na(nc) <- is.na(string) nc }
  18. example:

  19. create documents create documents If you wrote this, you just

    need to do this: devtools::document() This function create documents. For example, help, vignette, DESCRIPTION(package meta info), NAMESPACE and so on.
  20. Build and Testing Build and Testing

  21. Build check Build check Click “Check” button on “Build” tab:

    If you get error or warning, fix it.
  22. Build and test Build and test Click “Install and Restart”

    button on “Build” tab. After build and installed your package, execute and test the function to see if it works as intended:
  23. Check help Check help If you have already run and

    executed , you could see the help documents you write:
  24. None
  25. Test using testthat Test using testthat If you want to

    use automated test application(e.g., CircleCI), testthat package may help you. For more detail about testthat, please see the . package site
  26. Deploy Deploy

  27. Edit DESCRIPTION Edit DESCRIPTION You have to edit file …

    If you want add “package dependency”, use : usethis::use_package("name_of_package", type = "Imports")
  28. Write README.md(or README.Rmd) Write README.md(or README.Rmd) Write!

  29. How to deploy How to deploy It will be a

    quick way to publish to GitHub. You are already connected with github, so it’s OK if you push the project.
  30. Release on GitHub Release on GitHub

  31. Create the infomation-site of Create the infomation-site of this package

    this package
  32. Create site using pkgdown package Create site using pkgdown package

    1. install package 2. edit (or ) 3. run this code: pkgdown::build_site()
  33. Yeah!

  34. Deploy the site Deploy the site 1. git add ->

    git commit -> git push 2. access github and go to this repository 3. click “Setting” tab 4. activate “GitHub pages” choose “master branch /docs folder” at Source area 5. access and check it
  35. Summary Summary

  36. Let’s develop your package easily using Let’s develop your package

    easily using these packages! these packages! devtools roxygen2 usethis testthat rmarkdown pkgdown https://devtools.r-lib.org/ https://github.com/klutometis/roxygen https://usethis.r-lib.org/index.html https://testthat.r-lib.org/ https://bookdown.org/yihui/rmarkdown/ https://pkgdown.r-lib.org/
  37. Enjoy! Enjoy!