Babylonian confusion or flexibility?
As we are used from UNIX. there is not one single suitable solution to solve a problem, but usually a few different ways to do “the same”. Depending on what commands we know (best), we will chose the one or the other solution. Only the absolute expert will be able to choose the most efficient commands.
There is a similar situation with R’s graphics (and probably for methods from other domains as well). Let’s look at a simple example like the histogram (I use the Old Faithful Geyser Data here as example).
- there is the good old hist which gives
- from the mass library we get the truehist which plots densities
and apparently brings in some more truth, as the bars are different with the same underlying breaks.
- the library lattice provides histogram looking like this
- we skip gghistogram from the ggplot library and immediately move to
- qplot from ggplot2, which is actually a call to
qplot(eruptions, data = faithful, geom="histogram")
(compared to hist(faithful$eruptions))
- Finally, for those who like things more interactive, there is ihist from the iplots library
I don’t claim that this list is complete, but I think it nicely shows “the problem”. Of course, a “real R programmer” can make any of the plots look like one of the others … The question is more, which of the implementations beyond hist from the base library graphics really adds value to what we already had? The second question probably is, how R will ever resolve the backwards compatibility spiral that might make it look like a real legacy project some time – not to mention the package quality issue?