Skip to content

Render bits of R code for sharing, e.g., on GitHub or StackOverflow.

License

Notifications You must be signed in to change notification settings

yutannihilation/reprex

 
 

Repository files navigation

reprex

CRAN_Status_Badge Travis-CI Build Status AppVeyor Build Status Coverage Status

Prepare reprexes for posting to GitHub issues, StackOverflow, or getting help via email. 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.

Installation

Install from CRAN:

install.packages("reprex")

or get a development version from GitHub:

devtools::install_github("tidyverse/reprex")

Usage

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

(y <- 1:4)
mean(y)

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

reprex()

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
mean(y)
#> [1] 2.5
```

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

(y <- 1:4)
#> [1] 1 2 3 4
mean(y)
#> [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 StackOverflow with reprex(..., venue = "so").

  • Get a runnable R script, augmented with commented output, with reprex(..., venue = "R").

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

  • Use the outfile argument to control where results are left behind.

  • 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 StackOverflow
    • reprex_rescue(), when you're dealing with copy/paste from R Console

About

Render bits of R code for sharing, e.g., on GitHub or StackOverflow.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • R 99.9%
  • CSS 0.1%