Main requirements
Use the smallest, simplest, most built-in data possible.
- Think: - irisor- mtcars. Bore me.
- If you must make some objects, minimize their size and complexity. 
- Many of the functions and packages you already use offer a way to create a small data frame “inline”: - read.table()and friends have a- textargument. Example:
- tibble::tribble()lets you use a natural and readable layout. Example:
 
- Get just a bit of something with - head()or by indexing with the result of- sample(). If anything is random, consider using- set.seed()to make it repeatable.
- The datapasta package can generate code for - data.frame(),- tibble::tribble(), or- data.table::data.table()based on an existing R data frame. For example, a call to- tribble_format(head(ChickWeight, 3))leaves this on the clipboard, ready to paste into your reprex:
- dput()is a decent last resort, i.e. if you simply cannot make do with built-in or simulated data or inline data creation in a more readable format. But- dput()output is not very human-readable. Avoid if at all possible.
- Look at official examples and try to write in that style. Consider adapting one. 
Include commands on a strict “need to run” basis.
- Ruthlessly strip out anything unrelated to the specific matter at hand.
- Include every single command that is required, e.g. loading specific
packages via library(foo).
Consider including so-called “session info”, i.e. your OS and versions of R and add-on packages, if it’s conceivable that it matters.
- Use reprex(..., session_info = TRUE)for this.
Whitespace rationing is not in effect.
- Use good coding style.
- Use reprex(..., style = TRUE)to request automated styling of your code.
Pack it in, pack it out, and don’t take liberties with other people’s computers. You are asking people to run this code!
- Don’t start with - rm(list = ls()). It is anti-social to clobber other people’s workspaces.
- Don’t start with - setwd("C:\Users\jenny\path\that\only\I\have"), because it won’t work on anyone else’s computer.
- Don’t mask built-in functions, i.e. don’t define a new function named - cor- mean.
- If you change options, store original values at the start, do your thing, then restore them: 
- If you create files, delete them when you’re done: 
- Don’t delete files or objects that you didn’t create in the first place. 
- Take advantage of R’s built-in ability to create temporary files and directories. Read up on - tempfile()and- tempdir().