Learn R: As a Language

Image of the book cover

ISBN 9780367182533

My book on R was published on 28 July 2020. The R package ‘learnrbook’ available through CRAN contains data and the R code scripts and chunks from the book. The book has now its own website.

In the book’s website you will find free supplementary chapters as downloadable PDF files and other material complementing the book.

[2022-06-24] Last week I started updating the book manuscript for a 2nd printing/edition. For the time being I have been adding several diagrams and flow charts, expanding the text to improve clarity and fixing all typos in text and code that I am aware of. I am also addressing the new features in R 4.2.0 and changes to the packages used in the examples. Please, do share with me anything you would like changed from the current edition and report any mistakes you may have found. All useful contributions will be acknowledged. Thanks in advance!


ggpmisc 0.4.7

Version 0.4.7 brings a fix for a bug that could prevent the use of weights passed through aesthetic weight in some of the model-fitting statistics. Several enhancements to the model fitting statistics make it easier to fit different models to different groups or panels, and make it possible/easier to select among methods supported by a model fit function.

Here is a simple example of fitting different models to different panels. Instead of using lm() as method, we define a wrapper function that tests for the significance of the slope in linear regression, and if not significant, fits the mean instead.

poly_or_mean <- function(formula, data, ...) {
   mf <- lm(formula = formula, data = data, ...)
   if (anova(mf)[["Pr(>F)"]][1] > 0.1) {
      lm(formula = y ~ 1, data = data, ...)
   } else {

We pass the name of this function as argument to method overriding the default argument "lm".

ggplot(mpg, aes(displ, hwy)) +
   geom_point() +
   stat_poly_line(method = "poly_or_mean") +
   stat_poly_eq(method = poly_or_mean,
   aes(label = after_stat(eq.label)),
   label.x = "right") +
   theme(legend.position = "bottom") +
   facet_wrap(~class, ncol = 2)

Which produces the figure below, showing the mean in panels 2seater and minivan, and a linear regression in others.

Aditional examples are available in the free supplementary chapters of my book Learn R: As a Language.

Changes compared to version 0.4.6, the previous version in CRAN are:

  • Fix bug in the handling of the weight aesthetic in some of the model fitting statistics.
  • The model formula is in calls to stat_poly_eq() and stat_quant_eq() now retrieved from the returned fitted model object. This makes it possible model selection within the function passed as argument to method. (Inspired by an answer read in Stackoverflow.)
  • Statistics now search for a matching function when an arbitrary name is supplied as a character string argument to parameter method.
  • The character string passed as argument to parameter method is now parsed so that it can contain both the name of a model fit function and the argument to be passed to this function’s own method parameter. (Backward compatibility is maintained.)
  • The stats that create equation labels now include a variable method in the returned data containing a character string with the method used in the model fit.

Documentation web site at http://docs.r4photobiology.info/ggpmisc/ includes all help pages, with output from all examples, vignettes as well as a changelog in HTML format.

NOTE: Version 0.4.7 is on its way to CRAN.

Please raise issues concerning bugs or enhancements to this package through GitHub https://github.com/aphalo/ggpmisc/issues

photobiologyInOut 0.4.24

This non-code-breaking update brings a few new features and tracks deprecations in package ‘tidyr’.

The main changes from version 0.4.23 the previous CRAN release, are:

  • Replace use of deprecated tidyr::gather_().
  • Add function read_cid_spectravue_csv() supporting data import from measurements CSV files output by CID Bio-Science’s SpectraVue CI-710s leaf spectrometer.
  • Add function read_foreign2mspct() to apply an import function to a list of files.
  • Add color-related functions spct_CRI(), spct_CCT() and expect_SSI() implemented as wrappers to functions in package ‘colorSpec’. These functions accept source_spct objects as arguments. CRI, CCT and SSI are quantities used to describe light used for illumination, photography, cinematography and video.
  • Documentation web site at http://docs.r4photobiology.info/photobiologyInOut/.

NOTE: This version of the package is on its way to CRAN.

Please raise issues concerning bugs or enhancements to this package through Bitbucket at https://github.com/aphalo/photobiologyinout/issues

photobiologyLEDs 0.5.0

This is a major and code-breaking update. Naming conventions have been changed and several new spectra have been added. Previously included spectra have in most cases been recomputed and may slightly differ from earlier versions of the same data. In part this was done to reduce the size of the data objects, making it possible to include more spectra while keeping the size of the package reasonable. The number of spectra is more than 100, including several of the newest high CRI LEDs as well as some recent types for horticulture.

The main changes from version 0.4.2, the current CRAN release, are:

  • Revise for ‘ggspectra’ (>= 0.3.1).
  • Rebuild all data objects with ‘photobiology’ (== 0.10.10) taking care that all spectra in leds.mspct are normalized.
  • Apply function photobiology::thin_wl() to all spectra to reduce their stored size.
  • Add data for addtional LED types and update the metadata of most of those carried over from earlier versions.
  • Add lists of LEDs by intended use.
  • CODE BREAKING: change naming convention for members of the collection of spectra. Now names consist of “brand” and type.
  • CODE BREAKING: lists of LEDs by colour are now based on the wavelength at the peak of emission. We use ISO-standard wavelength boundaries for colours of visible radiation, except for purple < 400 nm. For ultraviolet we follow ISO. All broad-spectrum LEDs are listed as white.
  • Rewrite/revise all scripts used to prepare the spectral data.
  • Migrate Git repository from Bitbucket to GitHub.

Documentation web site at http://docs.r4photobiology.info/photobiologyLEDs/.

NOTE: The updated package has been submitted to CRAN.

Please raise issues concerning bugs or enhancements to this package through Bitbucket at https://github-com/aphalo/photobiologyLEDs/issues

Handbook on photobiological calculations with R

Book coverA handbook on how to do calculations used in photobiological research with R has been under preparation for a long time. An  80% complete version has been available through LeanPub for several years. The book describes the use of our suite of R packages and also of functions from base R and a few other packages available through CRAN. I (Pedro J. Aphalo) am the lead author, while Andreas Albert, T. Matthew Robson and Titta Kotilainen have contributed text and examples and feedback.

Although we haven’t had time to finish writing the book, I have been checking that the code examples work with current versions of R and packages. Rather recently I made small edits to a few code chunks that had stopped working and uploaded the new version of the PDF file to LeanPub.

Some minutes ago I tried to build all examples with R 4.2.o, a major update to R released some days ago. R 4.2.o contains a bug, that unluckily prevents a couple some examples in the book from running under MS-Windows. The already available patched version of R 4.2.0 solves this problem. Anyway, this bug affects only a very specific use related to data acquisition.

The book is sold for the amount the buyer wishes to pay, including getting it for free.