It is useful to present some of a program's output together with its code, even
when we're working in plain .R
scripts and not RMarkdown documents. This lets
us show the code to people and demonstrate what it does without having to reload
large datasets or execute long-running processes. This RStudio Add-In automates
that by inserting the last expression's output as a comment, along with a
datestamp showing when the code was last run for reportability.
You can install the development version of carboncopy
like so:
# install.packages("remotes")
remotes::install_github("DesiQuintans/carboncopy")
(CRAN coming) (Addinslist coming)
Bind carboncopy
's Insert .Last.value as a comment function to a keyboard
shortcut by going to Tools > Modify Keyboard Shortcuts and searching for
last
. I set it to Ctrl + \
so that I can run a block of code with
Ctrl + Enter
and then insert the result immediately with Ctrl + \
.
Note that the width of the output comment is based on the width of your Console
Pane at the time you insert the comment. This is because the add-in tells R to
print .Last.value
to the current console, then captures that output and
redirects it. Simply put, if your output is too wide or too narrow:
head(iris)
# Sepal.Length Sepal.Width
# 1 5.1 3.5
# 2 4.9 3.0
# 3 4.7 3.2
# 4 4.6 3.1
# 5 5.0 3.6
# 6 5.4 3.9
# Petal.Length Petal.Width
# 1 1.4 0.2
# 2 1.4 0.2
# 3 1.3 0.2
# 4 1.5 0.2
# 5 1.4 0.2
# 6 1.7 0.4
# Species
# 1 setosa
# 2 setosa
# 3 setosa
# 4 setosa
# 5 setosa
# 6 setosa
# < Last run: 2023-09-26 >
Then change the width of your Console Pane and try again:
head(iris)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 5.4 3.9 1.7 0.4 setosa
# < Last run: 2023-09-26 >
Most R expressions return something that gets saved to .Last.value
, so in most
cases you can run a block of code and then invoke Insert .Last.value as a
comment to insert the output in your document:
summary(beaver1$temp)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 36.33 36.76 36.87 36.86 36.96 37.53
# < Last run: 2023-09-26 >
Some R expressions only print to the Console but return nothing. For example,
stem()
prints a text histogram to the Console but returns NULL
, so this
happens when you insert the last output:
stem(warpbreaks$breaks)
# NULL
# < Last run: 2023-09-26 >
To capture the output of these, highlight the entire expression and then invoke Insert .Last.value as a comment. It will run your expression for you, capture the output directly, and insert it below.
stem(warpbreaks$breaks)
# The decimal point is 1 digit(s) to the right of the |
#
# 1 | 0234555667788899
# 2 | 001111445666678889999
# 3 | 00156699
# 4 | 1234
# 5 | 124
# 6 | 7
# 7 | 0
#
# < Last run: 2023-09-26 >