Render bits of R code for sharing, e.g., on GitHub or StackOverflow.
Branch: master
Clone or download
jennybc Use rlang (not dplyr) in test expression
Otherwise, R CMD check fails on r-devel because dplyr is not a formal dependency
Latest commit 8030fcf Feb 7, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add movebot config (#211) Oct 14, 2018
R Capture expression input with substitute(), again Feb 7, 2019
img Add gifs of reprex w datapasta (#218) Oct 30, 2018
inst Remove more logic from whisker template Sep 14, 2018
internal Add logo Jan 7, 2018
man Add html venue (#240) Feb 5, 2019
pkgdown/favicon Add bigger favicons Dec 6, 2018
slides/2018-09_reprex-rstudio-webinar Photo used in slides Sep 19, 2018
tests Use rlang (not dplyr) in test expression Feb 7, 2019
vignettes Put png's in a folder Dec 5, 2018
.Rbuildignore Created by use_pkgdown_travis() Dec 6, 2018
.gitignore Stop tracking docs/ Dec 6, 2018
.travis.yml Reorder build matrix so most important built first Dec 6, 2018
DESCRIPTION Rebuild pkgdown site Dec 5, 2018
LICENSE Update LICENSE Jan 7, 2018 De-header the MIT license Apr 5, 2018
NAMESPACE Switch to fs, internally (#195) Jul 1, 2018 Add html venue (#240) Feb 5, 2019 Use retina logo Dec 6, 2018
appveyor.yml Anticipate a partial update to callr on CRAN Jan 6, 2018
codecov.yml Less draconian coverage thresholds Sep 28, 2017 Update cran comments Sep 15, 2018
reprex.Rproj Update RStudio & roxygen2 May 25, 2017


CRAN_Status_Badge Travis-CI Build Status AppVeyor Build Status Coverage status lifecycle


Prepare reprexes for posting to GitHub issues, StackOverflow, or Slack snippets. What is a reprex? It’s a reproducible example, as coined by Romain Francois.

Given R code on the clipboard, selected in RStudio, as an expression (quoted or not), or in a file …

  • run it via rmarkdown::render(),
  • with deliberate choices re: arguments and setup chunk.

Get resulting runnable code + output as

  • Markdown, formatted for target venue, e.g. gh or so, or as
  • R code, augmented with commented output.

Result is returned invisibly, placed on the clipboard, and written to a file. Preview an HTML version in RStudio viewer or default browser.


Install from CRAN:


or get a development version from GitHub:


On Linux, you probably want to install xclip or xsel, so reprex can access the X11 clipboard. This is ‘nice to have’, but not mandatory. The usual sudo apt-get install or sudo yum install installation methods should work for both xclip and xsel.


Let’s say you copy this code onto your clipboard:

(y <- 1:4)

Then call reprex(), where the default target venue is GitHub:


A nicely rendered HTML preview will display in RStudio’s Viewer (if you’re in RStudio) or your default browser otherwise.

The relevant bit of GitHub-flavored Markdown is ready to be pasted from your clipboard:

``` r
(y <- 1:4)
#> [1] 1 2 3 4
#> [1] 2.5

Here’s what that Markdown would look like rendered in a GitHub issue:

(y <- 1:4)
#> [1] 1 2 3 4
#> [1] 2.5

Anyone else can copy, paste, and run this immediately.

Instead of reading from the clipboard, you can:

  • reprex(mean(rnorm(10))) to get code from expression.

  • reprex(input = "mean(rnorm(10))\n") gets code from character vector (detected via length or terminating newline). Leading prompts are stripped from input source: reprex(input = "> median(1:3)\n") produces same output as reprex(input = "median(1:3)\n")

  • reprex(input = "my_reprex.R") gets code from file

  • Use one of the RStudio add-ins to use the selected text or current file.

But wait, there’s more!

  • Set the target venue to Stack Overflow with reprex(..., venue = "so").

  • Get a runnable R script, augmented with commented output, with reprex(..., venue = "R"). This is useful for Slack, email, etc.

  • Prepare rendered, syntax-highlighted code snippets to paste into Keynote or PowerPoint, with reprex(..., venue = "rtf"). This feature is still experimental; see the associated article for more.

  • By default, figures are uploaded to and the resulting URL is dropped into an inline image tag.

  • Use the outfile argument to control where results are left behind. Use outfile = NA to work in current working directory.

  • Get clean, runnable code from wild-caught reprexes with

    • reprex_invert() = the opposite of reprex()
    • reprex_clean(), e.g. when you copy/paste from GitHub or Stack Overflow
    • reprex_rescue(), when you’re dealing with copy/paste from R Console

Please note that the reprex project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.