Please see the matahari website for full documentation:
There are three ways to use the matahari package
This vignette will walk through how to do each of these tasks.
To record R code as it is typed, use the dance_start()
and dance_stop()
functions.
# Start logging your R commands run in the console
dance_start()
4 + 4
"wow!"
mean(1:10)
# Pause logging
dance_stop()
# Look at your log as a tidy data frame
dance_tbl()
#> # A tibble: 6 x 6
#> expr value path contents selection dt
#> <list> <list> <list> <list> <list> <dttm>
#> 1 <language> <S3: sessionInfo> <lgl [1]> <lgl [1]> <lgl [1]> 2019-05-14 08:15:24
#> 2 <language> <lgl [1]> <lgl [1]> <lgl [1]> <lgl [1]> 2019-05-14 08:15:24
#> 3 <language> <lgl [1]> <lgl [1]> <lgl [1]> <lgl [1]> 2019-05-14 08:15:25
#> 4 <chr [1]> <lgl [1]> <lgl [1]> <lgl [1]> <lgl [1]> 2019-05-14 08:15:25
#> 5 <language> <lgl [1]> <lgl [1]> <lgl [1]> <lgl [1]> 2019-05-14 08:15:25
#> 6 <language> <S3: sessionInfo> <lgl [1]> <lgl [1]> <lgl [1]> 2019-05-14 08:15:25
Each time dance_start()
is run, a data frame logging the subsequent code is updated. To start over with a new data frame, you can use dance_remove()
and then re-run dance_start()
.
By default, this just records the R calls typed into the R console, populating the expr
column of the data frame. You can optionally also record the following by setting the parameter of the name to TRUE
. Some of these rely on using RStudio as your IDE.
value
: The values that are computedpath
: The path to the file in focus on the RStudio editorcontents
: The file contents of the RStudio editor tab in focusselection
: The text that is highlighted in the RStudio editor tab in focusFor example, the same code with value = TRUE
results in the following tidy data frame.
# Start logging your R commands run in the console
dance_start(value = TRUE)
4 + 4
"wow!"
mean(1:10)
# Pause logging
dance_stop()
# Look at your log as a tidy data frame
dance_tbl()
#> # A tibble: 6 x 6
#> expr value path contents selection dt
#> <list> <list> <list> <list> <list> <dttm>
#> 1 <language> <S3: sessionInfo> <lgl [1]> <lgl [1]> <lgl [1]> 2018-06-23 15:26:06
#> 2 <language> <int [1]> <lgl [1]> <lgl [1]> <lgl [1]> 2018-06-23 15:26:06
#> 3 <language> <dbl [1]> <lgl [1]> <lgl [1]> <lgl [1]> 2018-06-23 15:26:07
#> 4 <chr [1]> <chr [1]> <lgl [1]> <lgl [1]> <lgl [1]> 2018-06-23 15:26:08
#> 5 <language> <dbl [1]> <lgl [1]> <lgl [1]> <lgl [1]> 2018-06-23 15:26:08
#> 6 <language> <S3: sessionInfo> <lgl [1]> <lgl [1]> <lgl [1]> 2018-06-23 15:26:09
Notice now the value
column is now populated.
Alternatively you can input a string of R code and output a tidy data frame, using the dance_recital()
function.
dance_recital("
4 + 4
'wow!'
mean(1:10)
")
#> # A tibble: 3 x 6
#> expr value error output warnings messages
#> <list> <list> <list> <list> <list> <list>
#> 1 <language> <dbl [1]> <NULL> <chr [1]> <chr [0]> <chr [0]>
#> 2 <chr [1]> <chr [1]> <NULL> <chr [1]> <chr [0]> <chr [0]>
#> 3 <language> <dbl [1]> <NULL> <chr [1]> <chr [0]> <chr [0]>
This creates the same expr
and value
columns as the dance_start()
dance_stop()
workflow described above. In addition, it outputs any error
s, output
, warnings
, or messages
generated by the R code in the character string. Notice this data frame does not have the session information, since it is not called interactively from the R console. By default, dance_recital()
will evaluate all R code passed to it to retrieve the value
column. If you would like to just output the expr
column, you can set evaluate = FALSE
. This may be especially useful if you are analyzing lots of code and it would take a long time to run all commands.
The same dance_recital()
function can be used to analyze a .R file. Instead of including the code as a character string, pass the path of the .R file. An example file is included in this package.
(file <- system.file("test", "sample_code.R", package = "matahari"))
#> [1] "/private/var/folders/zw/l4fv__6n4tnbk3xb31dnbt5m0000gn/T/Rtmp87JmY8/Rinst183c1470cb409/matahari/test/sample_code.R"
dance_recital(file)
#> # A tibble: 7 x 6
#> expr value error output warnings messages
#> <list> <list> <list> <list> <list> <list>
#> 1 <language> <dbl [1]> <NULL> <chr [1]> <chr [0]> <chr [0]>
#> 2 <chr [1]> <chr [1]> <NULL> <chr [1]> <chr [0]> <chr [0]>
#> 3 <language> <dbl [1]> <NULL> <chr [1]> <chr [0]> <chr [0]>
#> 4 <language> <NULL> <smplErrr> <NULL> <NULL> <NULL>
#> 5 <language> <chr [1]> <NULL> <chr [1]> <chr [1]> <chr [0]>
#> 6 <language> <NULL> <NULL> <chr [1]> <chr [0]> <chr [1]>
#> 7 <language> <NULL> <NULL> <chr [1]> <chr [0]> <chr [0]>