Other than through redirection, which captures an entire session, is there a way to start and stop logging during an R session? To clarify, I am looking for something similar to the log using
command in Stata.
Do you know about sink()
in base R ?
There are also some logging packages on CRAN: logging, log4r and possibly more.
Lastly, Emacs user have ESS and its transcript mode. You can save your session as a log, and in general, the 'work from file and execute from the file' approach builds a (partial, commands-only) log as you work.
For the sake of completing the answer using sink
# copy the log to a text file
sink("./logofcode.txt")
Your R code(s) goes here
you can use a stored R code as well using source()
source("./XS_SPEC_CF.R",echo=T, max.deparse.length=1e3)
sink()
source_with_log <- function(r_script, log_file) { sink(file = log_file) source(r_script, echo = TRUE) sink() }
–
Castellatus There's savehistory(file)
which will write the entire history as plaintext, or, if you're trying to log output, use sink(file, split = TRUE)
.
There is also a package called logr that allows you a lot of control over what and when things get logged, but is much easier to use than sink()
. Here is an example:
library(logr)
# Open the log
log_open("mytest.log")
# Print text to the log
log_print("Here is a test log statement")
# Print a dataframe to the log
log_print(mtcars)
# Close the log
log_close()
And here is the generated log:
=========================================================================
Log Path: ./log/mytest.log
Working Directory: C:/packages/Testing/VS
User Name: User
R Version: 4.0.3 (2020-10-10)
Machine: BOSAK-HOME x86-64
Operating System: Windows 10 x64 build 18363
Log Start Time: 2021-01-24 21:13:55
=========================================================================
Here is a test log statement
NOTE: Log Print Time: 2021-01-24 21:13:56
NOTE: Elapsed Time in seconds: 1.07599902153015
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
NOTE: Data frame has 32 rows and 11 columns.
NOTE: Log Print Time: 2021-01-24 21:13:57
NOTE: Elapsed Time in seconds: 0.795979976654053
=========================================================================
Log End Time: 2021-01-24 21:14:06
Log Elapsed Time: 0 00:00:10
=========================================================================
logr
, but had never seen it in action. I recently fell hard for spdlog
for spewing information in both C++ and Python. Thanks for the update! –
Liquidator In addition to the sink
function you might also look at the txtStart
and related functions in the TeachingDemos
package or the similar functionality in the R2HTML
package (which came first).
© 2022 - 2024 — McMap. All rights reserved.