<p><div><div><div><div data-show-faces="false" data-height="21" data-width="100" data-layout="button_count" data-send="true" data-href="https://www.r-bloggers.com/16-complaining-works/"></div></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="http://dirk.eddelbuettel.com/blog/2018/02/06#016_note_inconsistencies"> Thinking inside the box </a></strong>, and kindly contributed to <a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers)</a> </div>
<p>Welcome to the sixteenth post in the <em>relatively random R related</em> series of posts, or <span><em>R</em><sup>4</sup></span> for short.</p>
<p>This one will likely be brief. But it is one post I have been meaning to get out for a little while—yet did not get around to. The <em>meta</em> point I am trying to make today is that despite overwhelming odds that may indicate otherwise, it can actually pay off to have <em>voice</em> or <em>platform</em>. Or, as I jokingly called it via slack to <a rel="nofollow" href="https://about.me/joshuaulrich" target="_blank">Josh</a>: <em>complaining works</em>. Hence the title.</p>
<p>There are two things I have harped about over the years (with respect to R), and very recently (and almost against all odds) both changed for the better.</p>
<p>First, <code>Rscript</code>. There was a of course little bit of pride and personal ownership involved as <a rel="nofollow" href="https://github.com/jeffreyhorner" target="_blank">Jeff Horner</a> and I got the first command-line interface to R out: <a rel="nofollow" href="http://dirk.eddelbuettel.com/code/littler.html" target="_blank">littler</a> with its <code>r</code> tool. As I recall, we beat the release of <code>Rscript</code> (which comes with R) narrowly by a few months. In any event, the bigger issue remained that <code>Rscript</code> would always fail on code requiring the <code>methods</code> package (also in base R). The given reason was load time and performance were slower due to the nature of S4 classes. But as I once blogged in jest, <a rel="nofollow" href="http://dirk.eddelbuettel.com/blog/2014/09/02/" target="_blank">littler is still faster at doing nothing</a> even though it always loaded <code>methods</code>—as one wants code to behave as it does under an interactive R session. And over the years I must have answered this question of &quot;Why does Rscript fail&quot; half a dozen times on the mailing lists and on StackOverflow. But now, thanks to <a rel="nofollow" href="http://homepage.divms.uiowa.edu/~luke/" target="_blank">Luke Tierney</a> who put <a rel="nofollow" href="http://developer.r-project.org/blosxom.cgi/R-devel/2018/01/07#n2018-01-07" target="_blank">the change in in early January</a>, R 3.5.0 we will have an <code>Rscript</code> that behaves like R and includes <code>methods</code> by default (unless instructed otherwise, of course). Nice.</p>
<p>Second, an issue I bemoaned repeatedly concerned the (at least to my reading) inconsistent treatment of <code>Suggests:</code> and <code>Depends:</code> in the <a rel="nofollow" href="https://cran.r-project.org/doc/manuals/r-release/R-exts.html" target="_blank">Writing R Extensions</a> manual on the one hand, and how <a rel="nofollow" href="http://cran.r-project.org/" target="_blank">CRAN</a> did (or, rather, did not) enforce this. In particular, and as I argued not quite a year ago, <a rel="nofollow" href="http://dirk.eddelbuettel.com/blog/2017/03/22/" target="_blank">Suggests != Depends</a>. In particular, tests should not just fail if a suggested package was not present (in the clean-room setup used for tests). Rather, one should make the tests conditional on this optional package being present. And this too now seems to be tested as I was among the recipients of one of those emails from <a rel="nofollow" href="http://cran.r-project.org/" target="_blank">CRAN</a> requiring a change. This one was clear in its title and mission: <em>CRAN packages not using microbenchmark conditionally</em>. Which we <a rel="nofollow" href="http://dirk.eddelbuettel.com/blog/2018/01/16#rcppmsgpack_0.2.1" target="_blank">fixed</a>. But the bigger issue is that <a rel="nofollow" href="http://cran.r-project.org/" target="_blank">CRAN</a> now seems to agree that <a rel="nofollow" href="http://dirk.eddelbuettel.com/blog/2017/03/22/" target="_blank">Suggests != Depends</a>.</p>
<p>So the main message now is clear: It seems to pay to comment on the mailing lists, or to write a blog post, or do something else to get one’s reasoning out. Change may not be immediate, but it may still come. So to paraphrase <a rel="nofollow" href="http://michaelpollan.com/" target="_blank">Michael Pollan</a>‘s beautiful dictum about food: <a rel="nofollow" href="http://www.nytimes.com/2007/01/28/magazine/28nutritionism.t.html" target="_blank"><em>&quot;Eat food. Not too much. Mostly plants.&quot;</em></a>, we could now say: <em>&quot;Report inconsistencies. Present evidence. Be patient.&quot;</em></p>
<p>
This post by <a rel="nofollow" href="http://dirk.eddelbuettel.com/" target="_blank">Dirk Eddelbuettel</a> originated on his <a rel="nofollow" href="http://dirk.eddelbuettel.com/blog/" target="_blank">Thinking inside the box</a> blog. Please report excessive re-aggregation in third-party for-profit settings.</p>
<p>
	<p>
<div>
<div>To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="http://dirk.eddelbuettel.com/blog/2018/02/06#016_note_inconsistencies"> Thinking inside the box </a></strong>.</div>
<hr>
<a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers.com</a> offers <strong><a rel="nofollow" href="https://feedburner.google.com/fb/a/mailverify?uri=RBloggers">daily e-mail updates</a></strong> about <a rel="nofollow" href="https://www.r-project.org/" title="The R Project for Statistical Computing">R</a> news and <a rel="nofollow" href="https://www.r-bloggers.com/search/tutorial" title="R tutorials">tutorials</a> on topics such as: <a rel="nofollow" href="https://www.r-bloggers.com/search/data%20science" title="Data science">Data science</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Big%20Data" title="Big Data">Big Data, <a rel="nofollow" href="https://www.r-users.com/" title="R jobs">R jobs</a>, visualization (<a rel="nofollow" href="https://www.r-bloggers.com/search/ggplot2" title="ggplot and ggplot2 tutorials">ggplot2</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/boxplot" title="Boxplots using lattice and ggplot2 tutorials">Boxplots</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/map" title="Maps and gis">maps</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/animation" title="Animation in R">animation</a>), programming (<a rel="nofollow" href="https://www.r-bloggers.com/search/RStudio" title="RStudio IDE for R">RStudio</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/sweave" title="Sweave and literate programming">Sweave</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/LaTeX" title="LaTeX in R">LaTeX</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/SQL" title="SQL and databases">SQL</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/eclipse" title="Eclipse IDE for R">Eclipse</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/git" title="git and github, Version Control System">git</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/hadoop" title="Large data in R using Hadoop">hadoop</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Web+Scraping" title="Web Scraping of google, facebook, yahoo, twitter and more using R">Web Scraping</a>) statistics (<a rel="nofollow" href="https://www.r-bloggers.com/search/regression" title="Regressions and ANOVA analysis tutorials">regression</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/PCA" title="principal component analysis tutorial">PCA</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/time+series" title="Time series">time series</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/trading" title="finance trading">trading</a>) and more...
<img width="1" alt="" src="http://feeds.feedburner.com/~r/RBloggers/~4/OxPuhGoMS6U" height="1"></a></div>