[Rd] [R-pkg-devel] Warning: rBind is deprecated

Martin Maechler maechler at stat.math.ethz.ch
Thu Mar 22 16:43:50 CET 2018

>From a small thread over at the 'R-package-devel' mailing list,

this now goes to the R-devel mailing list
(CC'ing the original R-package-devel very exceptionally). 

Note that I, as maintainer("Matrix") had introduced rBind() and
cBind() to be used for Matrix package matrices as substitute for
rbind() and cbind() because back then it was not reasonably
possible to provide S4 methods for these.

But for almost three years now, they have been deprecated,
unfortunately *not* with a warning [which was a lapsus of mine].
The help page for these has started, for a long time now, as

| cBind                  package:Matrix                  R Documentation
| Versions of 'cbind' and 'rbind' recursively built on cbind2/rbind2
| Description:
|      The base functions ‘cbind’ and ‘rbind’ are defined for an
|      arbitrary number of arguments and hence have the first formal
|      argument ‘...’.  For that reason, in the past S4 methods could
|      easily be defined for binding together matrices inheriting from
|      ‘Matrix’.
|      For that reason, ‘cbind2’ and ‘rbind2’ have been provided for
|      binding together _two_ matrices, and we have defined methods for
|      these and the ‘'Matrix'’-matrices.
|      Before R version 3.2.0 (April 2015), we have needed a substitute
|      for _S4-enabled_ versions of ‘cbind’ and ‘rbind’, and provided
|      ‘cBind’ and ‘rBind’ with identical syntax and semantic in order to
|      bind together multiple matrices (‘"matrix"’ or ‘"Matrix"’ and
|      vectors.  With R version 3.2.0 and newer, ‘cBind’ and ‘rBind’ are
|      _deprecated_ and produce a deprecation warning (via
|      ‘.Deprecated’), and your code should start using ‘cbind()’ and
|      ‘rbind()’ instead.

and finally, the next version of Matrix, which will be the
(recommended, hence bundled) Matrix package for R version 3.5.0
will produce warnings -- only once per session -- whenever
cBind() or rBind() are still used. 

This currently is true e.g., for lme4 and also for another
several dozens of CRAN packages, and unknown but probably
non-zero number of bioconductor packages.

There are even two CRAN packages which in their tests turn every
warning into an error and these packages will even fail their 'R
CMD check' in about a month when R 3.5.0 will appear.

Please package authors, do update the source of your packages:

a) replace  cBind() by cbind()  and rBind() by rbind()
b) Ensure that your package depends on at least R 3.2.0,
   i.e. possibly add a
      'Depends: R (>= 3.2.0)'
   to your DESCRIPTION file.

Of course feel free to comment / ask
privately or here {R-devel only} if necessary.

With best regards,

Martin Maechler
ETH Zurich

More information about the R-devel mailing list