R 3.6.0 is coming

A new version of R will be released on 2019-04-26. One significant change is the support of HCL colour definitios and palettes. Some defaults for colour palettes are changing (for the better) but small differences may visible in how plots look compared to earlier R versions. There is a post with a summary at the R blog, and a paper arXiv:1903.0649 describing why better palettes for data plotting can be defined.

Another significant change is that serialization format 3 becomes the default. As this format can be read only by R (>= 3.5.0) when sharing files created with save() or saveRDS(), and when sharing saved workspaces one needs to make sure the recipient is using a recent version of R or override this new default to create the files to be shared using the older serialization format 2.

All the packages I maintain should work correctly under R (= 3.6.0), but if you discover a problem, please, raise an issue at bitbucket within the repository of the affected package.

Benchmarking function sun_angles()

As far as I know there are in CRAN four R packages implementing the computations for the position of the sun and times of sunrise and sunset: ‘photobiology’, ‘fishmethods’, ‘solartime’ and ‘suncalc’.

The functions sun_angles() and day_night() from package ‘photobiology’ use Meeus equations as used by NOAA Solar Calculator https://www.esrl.noaa.gov/gmd/grad/solcalc/ which could be more precise than those in NOAA’s Excel worksheet which implement a simplified version of the Meeus equations especially for far into the past or far into the future calculations. The approximations based on Meuus equations are very good for years between 1800 and 2100 and results should still be sufficiently accurate for the range from -1000 to 3000 as long as the computation of Julian dates is correct. The Excel implementation is only valid for dates between 1901 and 2099 because of how Julian dates are computed in Excell.

Function astrocalc4r() from package ‘fishmethods’ also implements Meeus equations (the authors work at NOAA). Function computeSunPosition() from package ‘solartime’ uses unspecified equations and function getSunlightPosition() is an R interface to the ‘suncalc.js’ library, part of the ‘SunCalc.net’ project <http://suncalc.net>.

Function computeSunPosition() from package ‘solartime’ uses unspecified equations and function getSunlightPosition() is an R interface to the ‘suncalc.js’ library, part of the ‘SunCalc.net’ project <http://suncalc.net>.

Continue reading

Package ‘patchwork’

Operators defined in package ‘patchwork’ can be used to combine multiple plots created with package ‘ggplot2’ or extensions to it, such as my own ‘ggpmisc’ and ‘ggspectra’. (The site ggplot2 extensions showcases at the moment more than 40 extensions to ‘ggplot2’.)

Package ‘patchwork’ has been developed by Thomas Lin Pedersen, and being relatively new, it is not yet in CRAN. It can be installed from the public Git repository at Github.

# install.packages("devtools")
devtools::install_github("thomasp85/patchwork")

The ‘ggplot2’ package provides a strong API for sequentially building up a plot, but does not concern itself with composition of multiple plots. ‘patchwork’ is a package that expands the API to allow for arbitrarily complex composition of plots by providing mathmatical operators for combining multiple plots. Other packages that address this need (but with a different approach) are ‘gridExtra’ and ‘cowplot’.

From the package’s DESCRIPTION.

Package ‘ggspectra’ provides function multiplot() for this purpose, but this function is minimalistic, with its most important handicap in its inability to independently align the plotting areas and axis labels of the composed plots.

An example using the operators / and & from ‘patchwork’ follows.

library(ggspectra)
library(patchwork)
p <- autoplot(sun.spct) / 
  autoplot(polyester.spct, range = c(280, 800)) / 
  autoplot(sun.spct * polyester.spct)
png("three-plots.png", height = 800, width = 600)
print(p) & theme_bw()
dev.off()

R 3.5.0 and spaces in file paths

The R 3.5.0 update introduced a bug, at least under MS-Windows. File paths containing spaces are truncated at the first space character, leading to errors like:


Fatal error: cannot open file 'C:\Users\<user-name>\AppData\Roaming\WinEdt': No such file or directory

for a file path like 'C:\\Users\\<user-name>\\AppData\\Roaming\\WinEdt Team\\WinEdt 10\\<file-name>' or 'C:/Users/<user-name>/AppData/Roaming/WinEdt Team/WinEdt 10/<file-name>'.

This bug breaks, among other things, the ‘RManager’ extension of the editor WinEdt. I would expect this to cause various other surprising errors after upgrading to R 3.5.0.

This bug is already corrected in the patched version of R 3.5.0 available through CRAN. For Windows, the most recent patched R version can be downloaded from https://cran.r-project.org/bin/windows/base/rpatched.html and installed as usual.