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!

[2022-08-14] You may think that learning the ‘tidyverse’ could be enough. My experience tells it is not, and that a good understanding of the R language keeps one out of trouble even when using the ‘tidyverse’. I came accross an old post by Joel Spolsky that explains why this is the case in general: higher levels of abstractions “leak”, abstractions are imperfect, and the underlying complexity seeps through. With respect to R and the ‘tidyverse’, the evolving paper on Teaching R in a Kinder, Gentler, More Effective Manner by Norm Matloff is very clear about this.

[2022-08-24] The book has been listed as a “2021 CHOICE Outstanding Academic Title Award Winner” which makes me very happy and encourages my work on a 2nd edition.

ooacquire 0.2.6

Version 0.2.6 is a maintenance update, fixing compatibility with recent versions of ‘dplyr’ and the just reelased ‘photobiology’ 0.10.14. It also includes minor enhancements to the interactive user interface (UI) of function acq_irrad_interactive() . OceanInsight recently released version 2.70 of OmniDriver, and removed some functions from the API. For the time being, keep using version 2.56 that is known to work.

Continue reading

An R marathon updating packages

Recent and approaching code-breaking changes in the tidyverse packages ‘tidyselect’, ‘rlang’, ‘tidyr’, ‘dplyr’, ‘readr’ and ‘ggplot2’ meant that keeping my packages fully functional required changes to several of them. None of the changes in these packages made my packages fail CRAN checks, but they either made some functions unusable or triggered inumerable warnings in some use cases. In some cases the behaviour and warnings were weird and rather unpredictable, specially those due to the changes in ‘tidyselect’ version 1.2.0, which were also visible in ‘dplyr’ and ‘tidyr’. So below is a summary of my R-intensive week.

Continue reading

ggspectra 0.3.9

Some of the code in this package is rather complex and contained syntax and constructs that were known for some time to be on their way to deprecation and removal in different packages from the ‘tidyverse’. Updating the package to the syntax used in current ‘ggplot2’ versions had been in my to do list for some time. Now the update had to be done, and it is now done.

Continue reading

ggpmisc 0.5.1

Version 0.5.1 brings additional enhancements to the annotations based on model fits. These enhancements improve traceability by updating statistics to return additional information about the fitted models. Functions in ‘ggplot2’ that had been ealier announced as being at their end-of-life have now been deprecated. Some instances aes_() had remained lingering in the code and had to be replaced by aes() .

Continue reading

photobiology 0.10.14

COMPATIBILTY FIX: An update of package ‘tidyselect’ 1.2.0 now in CRAN deprecated syntax previously accepted. This change affected indirectly the syntax used in ‘dplyr’ and ‘tidyr’ resulting in lots of warnings and in a few odd behaviours in ‘photobiology’. To solve this I replaced several calls to dplyr::rename() and dplyr::select() with newly written code using only base R functions and operators.

Continue reading

photobiology 0.10.13

BUG FIX: Sometime during the early life of package ‘photobiology’ I decided that it was a good idea to support in collections of spectra the use of dimensions as a way of supporting spectral images and similar data. I never managed to buy a spectral camera and make use of this. So the code for dimensions was not much tested or used. As it happens, it contained a bug in the computation of dimensions that triggered odd and not easy to track errors when using negative numerical subscripts or logical subscripts with the extraction operator [ ] even with the default one-dimensional collections. I was bitten by this bug some days ago. Hopefully, you as many people usually do, have used only positive numerical values as subscripts and, thus, you have not been bitten by this nasty creature.

This bug is now squashed, and a new version of ‘photobiology’ ready to move to CRAN. It contains also a few enhancements.

Continue reading

ooacquire 0.2.4 and 0.2.5

The main new feature in version 0.2.5 is that the package can be installed and used in an off-line mode without need to install what were previously system requirements and required packages. In this mode data acquisition and communication with spectrometers is disabled, but processing of spectral data previously acquired or acquired with a different computer or using other software remains available unchanged.

Version 0.2.4 brings some improvements to the user interface for interactive data acquisition. It also fixes problems caused by code-breaking changes in package ‘readr’.

Continue reading

ggpp 0.4.5

Version 0.4.5 includes fixes for compatibility with the upcoming  updates in ‘ggplot2’ version 3.4.0, and adds enhancements to geom_text_s() and geom_label_s(). The most significative is the computation of the justification from the position displacement, which works with any of the position functions exported by ‘ggpp’. Another significant change is the implementation of padding.

Continue reading

photobiologyWavebands 0.5.0

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

  • Minor edits to documentation.
  • Rebuilt manual to comply with HTML 5.
  • Recognize Landsat mission "L9" as equal to "L8" as wavelengths are the same.
  • On bad arguments to parameter std the returned value is no-longer NA (a logical value) but instead a waveband object with its wavelength fields set to NA_real_, as returned by a call to waveband(). This potentially code-breaking change ensures that the class of the returned objects is the same irrespective of the arguments passed in the call, and that missing values more easily propagate to downstream computations without triggering errors.

Package documentation web site at: https://docs.r4photobiology.info/photobiologyWavebands/

NOTE: The updated package is on its way to CRAN.

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


HTML5 compliance of R packages

As of R 4.0.0 there is a requirement for compliance with the HTML5 standard. Until recently, package ‘Roxygen2’, that is used to automatically generate the documentation, included in its output some HTML4 tags that have been removed in the upgrade to HTML5.

For compliance with CRAN requirements I had to rebuild packages ‘ggspectra’, ‘photobiologyWavebands’, ‘photobiologyInOut’, ‘photobiologyLamps’ and ‘photobiologyLEDs’. There were no other changes in ‘ggspectra’. Some minor changes were included in the updates to ‘photobiologyLamps’, ‘photobiologyLEDs’ and ‘photobiologyInOut’. Changes to ‘photobiologyWavebands’ were more and are described in a separate post.

The updated packages have been submitted to CRAN.