Bleeding Edge Libraries For R

Previous posts have described the installation of R, and even installing some of its less than simple packages. But what do you do when a library appears to be installed by one of the normal methods and declares itself as such - until it is actually requested? In other words, a false positive, one of the most frightening creatures known in the world (although fortunately in this case trivial in damage). Consider this experience of installing Coda, output analysis and diagnostics for MCMC:


> install.packages("~/temp/coda_0.16-1.tar.gz",
+ lib="/home/USER/Rpk",repos=NULL)
* installing *source* package ‘coda’ ...
** package ‘coda’ successfully unpacked and MD5 sums checked
** R
** data
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices ...
** testing if installed package can be loaded
* DONE (coda)
>library(coda)
Error in library(coda) : there is no package called ‘coda’

The usual steps are undertaken, try different installation methods, try different versions of R, ensure that all dependencies are installed and so forth. Yet, it stll doesn't work. Nor do libraries such as hybermod, dream and a few other similar libraries; all very new and under-developed.

At this point the systems administrator needs to think like a developer. Sysadmins like software to work with, well, systems. Developers, especially developers of 0.x series software, don't care so much (let alone document such things). They want to produce a working product first as a proof of concept, and then carefully refine it to work as it should in the wild. The problem with previous attempts of installation is that the were with the default versions of R on the system (2.15.1-gcc) and the default version of gcc (4.6.2). With the giddy sense of obvious realisation (slaps forehead three times, in true Italian peasant style), a much newer version of R is invoked (3.0.1-gcc), along with a much newer version of gcc (4.8.0) - because it is much more probable that this is what the developers used. Indeed, when this was attempted all the libraries installed painlessly and jobs could be launched, and a valuable lesson recalled; bleeding edge libraries will probably require the newest applications and compilers.

And hit yourself in the forehead three times every time you see 0.x on a library version number so you don't forget.