<p><div><div><div><div data-width="100" data-show-faces="false" data-send="true" data-layout="button_count" data-height="21" data-href="http://www.r-bloggers.com/r-3-3-0-is-released/"></div></div><div><a data-url="http://www.r-bloggers.com/r-3-3-0-is-released/" data-counturl="http://www.r-bloggers.com/r-3-3-0-is-released/" data-count="horizontal" data-text="R 3.3.0 is released!" class="twitter-share-button" data-via="rbloggers" href="https://twitter.com/share"></a></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="http://www.r-statistics.com/2016/05/r-3-3-0-is-released/"> R – R-statistics blog</a></strong>, and kindly contributed to <a rel="nofollow" href="http://www.r-bloggers.com/">R-bloggers)</a> </div>
<p>R 3.3.0 (codename “Supposedly Educational”) was <a target="_blank" href="http://r.789695.n4.nabble.com/R-3-3-0-is-released-td4720368.html">released today</a>. You can get the latest binaries version <strong><a target="_blank" href="http://cran.rstudio.com/">from here</a>.</strong> (or the .tar.gz <strong>source</strong> code from <a target="_blank" href="http://cran.r-project.org/src/base/R-3/R-3.3.0.tar.gz">here</a>). The full list of new features and bug fixes is provided below.</p>
<h3>Upgrading to R 3.3.0 on Windows</h3>
<p>If you are using <strong>Windows </strong>you can easily upgrade to the latest version of R using <a target="_blank" href="http://cran.r-project.org/web/packages/installr/">the installr package</a>. Simply run the following code in Rgui:</p>
<div>
<table>
<tr>
<td>
<pre><span>install.<span>packages</span></span><span>(</span><span>&quot;installr&quot;</span><span>)</span> <span># install </span>
setInternet2<span>(</span>TRUE<span>)</span>
installr<span>::</span><span>updateR</span><span>(</span><span>)</span> <span># updating R.</span></pre>
</td>
</tr>
</table>
</div>
<p><span>Running “updateR()” will detect if there is a new R version available, and if so it will download+install it (etc.). There is also <a target="_blank" href="http://www.r-statistics.com/2015/06/a-step-by-step-screenshots-tutorial-for-upgrading-r-on-windows/">a step by step tutorial (with screenshots) on how to upgrade R on Windows, using the <em>installr</em></a> package. If you only see the option to upgrade to an older version of R, then change your mirror or try again in a few hours (it usually take around 24 hours for all CRAN mirrors to get the latest version of R).</span></p>
<p><em>I try to keep the <a target="_blank" href="https://github.com/talgalili/installr">installr</a> package updated and useful, so if you have any suggestions or remarks on the package – you are invited to <a target="_blank" href="https://github.com/talgalili/installr/issues">open an issue in the github page</a>.</em></p>
<h3>CHANGES IN R 3.3.0</h3>
<h4>SIGNIFICANT USER-VISIBLE CHANGES</h4>
<ul>
<li><code>nchar(x, *)</code>‘s argument <code>keepNA</code> governing how the result for <code>NA</code>s in <code>x</code> is determined, gets a new default <code>keepNA = NA</code> which returns <code>NA</code> where <code>x</code> is <code>NA</code>, except for <code>type = &quot;width&quot;</code> which still returns <code>2</code>, the formatting / printing width of <code>NA</code>.</li>
<li>All builds have support for <span>https:</span> URLs in the default methods for <code>download.file()</code>, <code>url()</code> and code making use of them.Unfortunately that cannot guarantee that any particular <span>https:</span> URL can be accessed. For example, server and client have to successfully negotiate a cryptographic protocol (TLS/SSL, …) and the server’s identity has to be verifiable <em>via</em> the available certificates. Different access methods may allow different protocols or use private certificate bundles: we encountered a <span>https:</span> CRAN mirror which could be accessed by one browser but not by another nor by <code>download.file()</code> on the same Linux machine.</li>
</ul>
<h4>NEW FEATURES</h4>
<p><span></span></p>
<ul>
<li>The <code>print</code> method for <code>methods()</code> gains a <code>byclass</code> argument.</li>
<li>New functions <code>validEnc()</code> and <code>validUTF8()</code> to give access to the validity checks for inputs used by <code>grep()</code> and friends.</li>
<li>Experimental new functionality for S3 method checking, notably <code>isS3method()</code>.Also, the names of the <b>R</b> ‘language elements’ are exported as character vector <code>tools::langElts</code>.</li>
<li><code>str(x)</code> now displays <code>&quot;Time-Series&quot;</code> also for matrix (multivariate) time-series, i.e. when <code>is.ts(x)</code> is true.</li>
<li>(Windows only) The GUI menu item to install local packages now accepts ‘<span>*.tar.gz</span>’ files as well as ‘<span>*.zip</span>’ files (but defaults to the latter).</li>
<li>New programmeR’s utility function <code>chkDots()</code>.</li>
<li><code>D()</code> now signals an error when given invalid input, rather than silently returning <code>NA</code>. (Request of John Nash.)</li>
<li><code>formula</code> objects are slightly more “first class”: e.g., <code>formula()</code> or <code>new(&quot;formula&quot;, y ~ x)</code> are now valid. Similarly, for <code>&quot;table&quot;</code>, <code>&quot;ordered&quot;</code> and <code>&quot;summary.table&quot;</code>. Packages defining S4 classes with the above S3/S4 classes as slots should be reinstalled.</li>
<li>New function <code>strrep()</code> for repeating the elements of a character vector.</li>
<li><code>rapply()</code> preserves attributes on the list when <code>how = &quot;replace&quot;</code>.</li>
<li>New S3 generic function <code>sigma()</code> with methods for extracting the estimated standard deviation aka “residual standard deviation” from a fitted model.</li>
<li><code>news()</code> now displays <b>R</b> and package news files within the HTML help system if it is available. If no news file is found, a visible <code>NULL</code> is returned to the console.</li>
<li><code>as.raster(x)</code> now also accepts <code>raw</code> arrays <code>x</code> assuming values in <code>0:255</code>.</li>
<li>Subscripting of matrix/array objects of type <code>&quot;expression&quot;</code> is now supported.</li>
<li><code>type.convert(&quot;i&quot;)</code> now returns a factor instead of a complex value with zero real part and missing imaginary part.</li>
<li>Graphics devices <code>cairo_pdf()</code> and <code>cairo_ps()</code> now allow non-default values of the cairographics ‘fallback resolution’ to be set.This now defaults to 300 on all platforms: that is the default documented by cairographics, but apparently was not used by all system installations.</li>
<li><code>file()</code> gains an explicit <code>method</code> argument rather than implicitly using <code>getOption(&quot;url.method&quot;, &quot;default&quot;)</code>.</li>
<li>Thanks to a patch from Tomas Kalibera, <code>x[x != 0]</code> is now typically faster than <code>x[which(x != 0)]</code> (in the case where <code>x</code> has no NAs, the two are equivalent).</li>
<li><code>read.table()</code> now always uses the names for a named <code>colClasses</code> argument (previously names were only used when <code>colClasses</code> was too short). (In part, wish of<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16478">PR#16478</a>.)</li>
<li>(Windows only) <code>download.file()</code> with default <code>method = &quot;auto&quot;</code> and a <span>ftps://</span> URL chooses <code>&quot;libcurl&quot;</code> if that is available.</li>
<li>The out-of-the box Bioconductor mirror has been changed to one using <span>https://</span>: use <code>chooseBioCmirror()</code> to choose a <span>http://</span> mirror if required.</li>
<li>The data frame and formula methods for <code>aggregate()</code> gain a <code>drop</code> argument.</li>
<li><code>available.packages()</code> gains a <code>repos</code> argument.</li>
<li>The undocumented switching of methods for <code>url()</code> on <span>https:</span> and <span>ftps:</span> URLs is confined to <code>method = &quot;default&quot;</code> (and documented).</li>
<li><code>smoothScatter()</code> gains a <code>ret.selection</code> argument.</li>
<li><code>qr()</code> no longer has a <code>...</code> argument to pass additional arguments to methods.</li>
<li><code>[</code> has a method for class <code>&quot;table&quot;</code>.</li>
<li>It is now possible (again) to <code>replayPlot()</code> a display list snapshot that was created by <code>recordPlot()</code> in a different <b>R</b> session.It is still not a good idea to use snapshots as a persistent storage format for <b>R</b> plots, but it is now not completely silly to use a snapshot as a format for transferring an R plot between two R sessions.
<p>The underlying changes mean that packages providing graphics devices (e.g., <a target="_blank" href="https://cran.r-project.org/package=Cairo"><span>Cairo</span></a>, <a target="_blank" href="https://cran.r-project.org/package=RSvgDevice"><span>RSvgDevice</span></a>, <a target="_blank" href="https://cran.r-project.org/package=cairoDevice"><span>cairoDevice</span></a>, <a target="_blank" href="https://cran.r-project.org/package=tikzDevice"><span>tikzDevice</span></a>) will need to be reinstalled.</p>
<p>Code for restoring snapshots was contributed by Jeroen Ooms and JJ Allaire.</p>
<p>Some testing code is available at <a target="_blank" href="https://github.com/pmur002/R-display-list">https://github.com/pmur002/R-display-list</a>.
<li><code>tools::undoc(dir = D)</code> and <code>codoc(dir = D)</code> now also work when <code>D</code> is a directory whose <code>normalizePath()</code>ed version does not end in the package name, e.g. from a symlink.</li>
<li><code>abbreviate()</code> has more support for multi-byte character sets – it no longer removes bytes within characters and knows about Latin vowels with accents. It is still only really suitable for (most) European languages, and still warns on non-ASCII input.<code>abbreviate(use.classes = FALSE)</code> is now implemented, and that is more suitable for non-European languages.</li>
<li><code>match(x, table)</code> is faster (sometimes by an order of magnitude) when <code>x</code> is of length one and <code>incomparables</code> is unchanged, thanks to Peter Haverty (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16491">PR#16491</a>).</li>
<li>More consistent, partly not back-compatible behavior of <code>NA</code> and <code>NaN</code> coercion to complex numbers, operations less often resulting in complex <code>NA</code> (<code>NA_complex_</code>).</li>
<li><code>lengths()</code> considers methods for <code>length</code> and <code>[[</code> on <code>x</code>, so it should work automatically on any objects for which appropriate methods on those generics are defined.</li>
<li>The logic for selecting the default screen device on OS X has been simplified: it is now <code>quartz()</code> if that is available even if environment variable <span>DISPLAY</span> has been set by the user.The choice can easily be overridden <em>via</em> environment variable <span>R_INTERACTIVE_DEVICE</span>.</li>
<li>On Unix-like platforms which support the <code>getline</code> C library function, <code>system(*,intern = TRUE)</code> no longer truncates (output) lines longer than 8192 characters, thanks to Karl Millar. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16544">PR#16544</a>)</li>
<li><code>rank()</code> gains a <code>ties.method = &quot;last&quot;</code> option, for convenience (and symmetry).</li>
<li><code>regmatches(invert = NA)</code> can now be used to extract both non-matched and matched substrings.</li>
<li><code>data.frame()</code> gains argument <code>fix.empty.names</code>; <code>as.data.frame.list()</code> gets new <code>cut.names</code>, <code>col.names</code> and <code>fix.empty.names</code>.</li>
<li><code>plot(x ~ x, *)</code> now warns that it is the same as <code>plot(x ~ 1, *)</code>.</li>
<li><code>recordPlot()</code> has new arguments <code>load</code> and <code>attach</code> to allow package names to be stored as part of a recorded plot. <code>replayPlot()</code> has new argument <code>reloadPkgs</code> to load/attach any package names that were stored as part of a recorded plot.</li>
<li>S4 dispatch works within calls to <code>.Internal()</code>. This means explicit S4 generics are no longer needed for <code>unlist()</code> and <code>as.vector()</code>.</li>
<li>Only font family names starting with <span>“Hershey”</span> (and not <span>“Her”</span> as before) are given special treatment by the graphics engine.</li>
<li>S4 values are automatically coerced to vector (via <code>as.vector</code>) when subassigned into atomic vectors.</li>
<li><code>findInterval()</code> gets a <code>left.open</code> option.</li>
<li>The version of LAPACK included in the sources has been updated to 3.6.0, including those ‘deprecated’ routines which were previously included. <em>Ca</em> 40 double-complex routines have been added at the request of a package maintainer.As before, the details of what is included are in ‘<span>src/modules/lapack/README</span>’ and this now gives information on earlier additions.</li>
<li><code>tapply()</code> has been made considerably more efficient without changing functionality, thanks to proposals from Peter Haverty and Suharto Anggono. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16640">PR#16640</a>)</li>
<li><code>match.arg(arg)</code> (the one-argument case) is faster; so is <code>sort.int()</code>. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16640">PR#16640</a>)</li>
<li>The <code>format</code> method for <code>object_size</code> objects now also accepts “binary” units such as <code>&quot;KiB&quot;</code> and e.g., <code>&quot;Tb&quot;</code>. (Partly from <a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16649">PR#16649</a>.)</li>
<li>Profiling now records calls of the form <code>foo::bar</code> and some similar cases directly rather than as calls to <code>&lt;Anonymous></code>. Contributed by Winston Chang.</li>
<li>New string utilities <code>startsWith(x, prefix)</code> and <code>endsWith(x, suffix)</code>. Also provide speedups for some <code>grepl(&quot;^...&quot;,*)</code> uses (related to proposals in <a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16490">PR#16490</a>).</li>
<li>Reference class finalizers run at exit, as well as on garbage collection.</li>
<li>Avoid <span>parallel</span> dependency on <span>stats</span> for port choice and random number seeds. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16668">PR#16668</a>)</li>
<li>The radix sort algorithm and implementation from <a target="_blank" href="https://cran.r-project.org/package=data.table"><span>data.table</span></a> (<code>forder</code>) replaces the previous radix (counting) sort and adds a new method for <code>order()</code>. Contributed by Matt Dowle and Arun Srinivasan, the new algorithm supports logical, integer (even with large values), real, and character vectors. It outperforms all other methods, but there are some caveats (see <code>?sort</code>).</li>
<li>The <code>order()</code> function gains a <code>method</code> argument for choosing between <code>&quot;shell&quot;</code> and <code>&quot;radix&quot;</code>.</li>
<li>New function <code>grouping()</code> returns a permutation that stably rearranges data so that identical values are adjacent. The return value includes extra partitioning information on the groups. The implementation came included with the new radix sort.</li>
<li><code>rhyper(nn, m, n, k)</code> no longer returns <code>NA</code> when one of the three parameters exceeds the maximal integer.</li>
<li><code>switch()</code> now warns when no alternatives are provided.</li>
<li><code>parallel::detectCores()</code> now has default <code>logical = TRUE</code> on all platforms – as this was the default on Windows, this change only affects Sparc Solaris.Option <code>logical = FALSE</code> is now supported on Linux and recent versions of OS X (for the latter, thanks to a suggestion of Kyaw Sint).</li>
<li><code>hist()</code> for <code>&quot;Date&quot;</code> or <code>&quot;POSIXt&quot;</code> objects would sometimes give misleading labels on the breaks, as they were set to the day before the start of the period being displayed. The display format has been changed, and the shift of the start day has been made conditional on <code>right = TRUE</code> (the default). (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16679">PR#16679</a>)</li>
<li><b>R</b> now uses a new version of the logo (donated to the R Foundation by RStudio). It is defined in ‘<span>.svg</span>’ format, so will resize without unnecessary degradation when displayed on HTML pages—there is also a vector PDF version. Thanks to Dirk Eddelbuettel for producing the corresponding X11 icon.</li>
<li>New function <code>.traceback()</code> returns the stack trace which <code>traceback()</code> prints.</li>
<li><code>lengths()</code> dispatches internally.</li>
<li><code>dotchart()</code> gains a <code>pt.cex</code> argument to control the size of points separately from the size of plot labels. Thanks to Michael Friendly and Milan Bouchet-Valat for ideas and patches.</li>
<li><code>as.roman(ch)</code> now correctly deals with more diverse character vectors <code>ch</code>; also arithmetic with the resulting roman numbers works in more cases. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16779">PR#16779</a>)</li>
<li><code>prcomp()</code> gains a new option <code>rank.</code> allowing to directly aim for less than <code>min(n,p)</code> PC’s. The <code>summary()</code> and its <code>print()</code> method have been amended, notably for this case.</li>
<li><code>gzcon()</code> gains a new option <code>text</code>, which marks the connection as text-oriented (so e.g. <code>pushBack()</code> works). It is still always opened in binary mode.</li>
<li>The <code>import()</code> namespace directive now accepts an argument <code>except</code> which names symbols to exclude from the imports. The <code>except</code> expression should evaluate to a character vector (after substituting symbols for strings). See Writing R Extensions.</li>
<li>New convenience function <code>Rcmd()</code> in package <span>tools</span> for invoking <code>R CMD</code> tools from within <b>R</b>.</li>
<li>New functions <code>makevars_user()</code> and <code>makevars_site()</code> in package <span>tools</span> to determine the location of the user and site specific ‘<span>Makevars</span>’ files for customizing package compilation.</li>

<h4>UTILITIES</h4>
<ul>
<li><code>R CMD check</code> has a new option <span>–ignore-vignettes</span> for use with non-Sweave vignettes whose <span>VignetteBuilder</span> package is not available.</li>
<li><code>R CMD check</code> now by default checks code usage (<em>via</em> <a target="_blank" href="https://cran.r-project.org/package=codetools"><span>codetools</span></a>) with only the base package attached. Functions from default packages other than <span>base</span> which are used in the package code but not imported are reported as undefined globals, with a suggested addition to the <code>NAMESPACE</code> file.</li>
<li><code>R CMD check --as-cran</code> now also checks DOIs in package ‘<span>CITATION</span>’ and Rd files.</li>
<li><code>R CMD Rdconv</code> and <code>R CMD Rd2pdf</code> each have a new option <span>–RdMacros=pkglist</span> which allows Rd macros to be specified before processing.</li>
</ul>
<h4>DEPRECATED AND DEFUNCT</h4>
<ul>
<li>The previously included versions of <code>zlib</code>, <code>bzip2</code>, <code>xz</code> and PCRE have been removed, so suitable external (usually system) versions are required (see the ‘R Installation and Administration’ manual).</li>
<li>The unexported and undocumented Windows-only devices <code>cairo_bmp()</code>, <code>cairo_png()</code> and <code>cairo_tiff()</code> have been removed. (These devices should be used as e.g.<code>bmp(type = &quot;cairo&quot;)</code>.)</li>
<li>(Windows only) Function <code>setInternet2()</code> has no effect and will be removed in due course. The choice between methods <code>&quot;internal&quot;</code> and <code>&quot;wininet&quot;</code> is now made by the<code>method</code> arguments of <code>url()</code> and <code>download.file()</code> and their defaults can be set <em>via</em> options. The out-of-the-box default remains <code>&quot;wininet&quot;</code> (as it has been since <b>R</b> 3.2.2).</li>
<li><code>[&lt;-</code> with an S4 value into a list currently embeds the S4 object into its own list such that the end result is roughly equivalent to using <code>[[&lt;-</code>. That behavior is deprecated. In the future, the S4 value will be coerced to a list with <code>as.list()</code>.</li>
<li>Package <span>tools</span>‘ functions <code>package.dependencies()</code>, <code>pkgDepends()</code>, etc are deprecated now, mostly in favor of <code>package_dependencies()</code> which is both more flexible and efficient.</li>
</ul>
<h4>INSTALLATION and INCLUDED SOFTWARE</h4>
<ul>
<li>Support for very old versions of <code>valgrind</code> (e.g., 3.3.0) has been removed.</li>
<li>The included <code>libtool</code> script (generated by <code>configure</code>) has been updated to version 2.4.6 (from 2.2.6a).</li>
<li><code>libcurl</code> version 7.28.0 or later with support for the <code>https</code> protocol is required for installation (except on Windows).</li>
<li>BSD networking is now required (except on Windows) and so <code>capabilities(&quot;http/ftp&quot;)</code> is always true.</li>
<li><code>configure</code> uses <code>pkg-config</code> for PNG, TIFF and JPEG where this is available. This should work better with multiple installs and with those using static libraries.</li>
<li>The minimum supported version of OS X is 10.6 (‘Snow Leopard’): even that has been unsupported by Apple since 2012.</li>
<li>The <code>configure</code> default on OS X is <span>–disable-R-framework</span>: enable this if you intend to install under ‘<span>/Library/Frameworks</span>’ and use with <code>R.app</code>.</li>
<li>The minimum preferred version of PCRE has since <b>R</b> 3.0.0 been 8.32 (released in Nov 2012). Versions 8.10 to 8.31 are now deprecated (with warnings from <code>configure</code>), but will still be accepted until <b>R</b> 3.4.0.</li>
<li><code>configure</code> looks for C functions <code>__cospi</code>, <code>__sinpi</code> and <code>__tanpi</code> and uses these if <code>cospi</code> <em>etc</em> are not found. (OS X is the main instance.)</li>
<li>(Windows) R is now built using <code>gcc</code> 4.9.3. This build will require recompilation of at least those packages that include C++ code, and possibly others. A build of R-devel using the older toolchain will be temporarily available for comparison purposes.During the transition, the environment variable <span>R_COMPILED_BY</span> has been defined to indicate which toolchain was used to compile R (and hence, which should be used to compile code in packages). The <code>COMPILED_BY</code> variable described below will be a permanent replacement for this.</li>
<li>(Windows) A <code>make</code> and <code>R CMD config</code> variable named <code>COMPILED_BY</code> has been added. This indicates which toolchain was used to compile R (and hence, which should be used to compile code in packages).</li>
</ul>
<h4>PACKAGE INSTALLATION</h4>
<ul>
<li>The <code>make</code> macro <code>AWK</code> which used to be made available to files such as ‘<span>src/Makefile</span>’ is no longer set.</li>
</ul>
<h4>C-LEVEL FACILITIES</h4>
<ul>
<li>The API call <code>logspace_sum</code> introduced in <b>R</b> 3.2.0 is now remapped as an entry point to <code>Rf_logspace_sum</code>, and its first argument has gained a <code>const</code> qualifier. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16470">PR#16470</a>)Code using it will need to be reinstalled.
<p>Similarly, entry point <code>log1pexp</code> also defined in ‘<span>Rmath.h</span>’ is remapped there to <code>Rf_log1pexp</code>
<li><code>R_GE_version</code> has been increased to <code>11</code>.</li>
<li>New API call <code>R_orderVector1</code>, a faster one-argument version of <code>R_orderVector</code>.</li>
<li>When <b>R</b> headers such as ‘<span>R.h</span>’ and ‘<span>Rmath.h</span>’ are called from C++ code in packages they include the C++ versions of system headers such as ‘<span>&lt;cmath></span>’ rather than the legacy headers such as ‘<span>&lt;math.h></span>’. (Headers ‘<span>Rinternals.h</span>’ and ‘<span>Rinterface.h</span>’ already did, and inclusion of system headers can still be circumvented by defining<code>NO_C_HEADERS</code>, including as from this version for those two headers.)The manual has long said that <b>R</b> headers should <b>not</b> be included within an <code>extern &quot;C&quot;</code> block, and almost all the packages affected by this change were doing so.</li>
<li>Including header ‘<span>S.h</span>’ from C++ code would fail on some platforms, and so gives a compilation error on all.</li>
<li>The deprecated header ‘<span>Rdefines.h</span>’ is now compatible with defining <code>R_NO_REMAP</code>.</li>
<li>The connections API now includes a function <code>R_GetConnection()</code> which allows packages implementing connections to convert R <code>connection</code> objects to <code>Rconnection</code>handles used in the API. Code which previously used the low-level R-internal <code>getConnection()</code> entry point should switch to the official API.</li>

<h4>BUG FIXES</h4>
<ul>
<li>C-level <code>asChar(x)</code> is fixed for when <code>x</code> is not a vector, and it returns <code>&quot;TRUE&quot;</code>/<code>&quot;FALSE&quot;</code> instead of <code>&quot;T&quot;</code>/<code>&quot;F&quot;</code> for logical vectors.</li>
<li>The first arguments of <code>.colSums()</code> etc (with an initial dot) are now named <code>x</code> rather than <code>X</code> (matching <code>colSums()</code>): thus error messages are corrected.</li>
<li>A <code>coef()</code> method for class <code>&quot;maov&quot;</code> has been added to allow <code>vcov()</code> to work with multivariate results. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16380">PR#16380</a>)</li>
<li><code>method = &quot;libcurl&quot;</code> connections signal errors rather than retrieving HTTP error pages (where the ISP reports the error).</li>
<li><code>xpdrows.data.frame()</code> was not checking for unique row names; in particular, this affected assignment to non-existing rows via numerical indexing. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16570">PR#16570</a>)</li>
<li><code>tail.matrix()</code> did not work for zero rows matrices, and could produce row “labels” such as <code>&quot;[1e+05,]&quot;</code>.</li>
<li>Data frames with a column named <code>&quot;stringsAsFactors&quot;</code> now format and print correctly. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16580">PR#16580</a>)</li>
<li><code>cor()</code> is now guaranteed to return a value with absolute value less than or equal to 1. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16638">PR#16638</a>)</li>
<li>Array subsetting now keeps <code>names(dim(.))</code>.</li>
<li>Blocking socket connection selection recovers more gracefully on signal interrupts.</li>
<li>The <code>data.frame</code> method of <code>rbind()</code> construction <code>row.names</code> works better in borderline integer cases, but may change the names assigned. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16666">PR#16666</a>)</li>
<li>(X11 only) <code>getGraphicsEvent()</code> miscoded buttons and missed mouse motion events. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16700">PR#16700</a>)</li>
<li><code>methods(round)</code> now also lists <code>round.POSIXt</code>.</li>
<li><code>tar()</code> now works with the default <code>files = NULL</code>. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16716">PR#16716</a>)</li>
<li>Jumps to outer contexts, for example in error recovery, now make intermediate jumps to contexts where <code>on.exit()</code> actions are established instead of trying to run all<code>on.exit()</code> actions before jumping to the final target. This unwinds the stack gradually, releases resources held on the stack, and significantly reduces the chance of a segfault when running out of C stack space. Error handlers established using <code>withCallingHandlers()</code> and <code>options(&quot;error&quot;)</code> specifications are ignored when handling a C stack overflow error as attempting one of these would trigger a cascade of C stack overflow errors. (These changes resolve <a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16753">PR#16753</a>.)</li>
<li>The spacing could be wrong when printing a complex array. (Report and patch by Lukas Stadler.)</li>
<li><code>pretty(d, n, min.n, *)</code> for date-time objects <code>d</code> works again in border cases with large <code>min.n</code>, returns a <code>labels</code> attribute also for small-range dates and in such cases its returned length is closer to the desired <code>n</code>. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16761">PR#16761</a>) Additionally, it finally does cover the range of <code>d</code>, as it always claimed.</li>
<li><code>tsp(x) &lt;- NULL</code> did not handle correctly objects inheriting from both <code>&quot;ts&quot;</code> and <code>&quot;mts&quot;</code>. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16769">PR#16769</a>)</li>
<li><code>install.packages()</code> could give false errors when <code>options(&quot;pkgType&quot;)</code> was <code>&quot;binary&quot;</code>. (Reported by Jose Claudio Faria.)</li>
<li>A bug fix in <b>R</b> 3.0.2 fixed problems with <code>locator()</code> in X11, but introduced problems in Windows. Now both should be fixed. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15700">PR#15700</a>)</li>
<li><code>download.file()</code> with <code>method = &quot;wininet&quot;</code> incorrectly warned of download file length difference when reported length was unknown. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16805">PR#16805</a>)</li>
<li><code>diag(NULL, 1)</code> crashed because of missed type checking. (<a target="_blank" href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16853">PR#16853</a>)</li>
</ul>
<p> </p>
<p><a target="_blank" href="http://i2.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg"><img alt="logo" class="wp-image-61379" src="http://i2.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?resize=100%2C76" data-recalc-dims="1"></a></p>
<p><div><div><div><div data-width="55" data-show-faces="false" data-send="true" data-layout="box_count" data-height="62" data-href="http://www.r-bloggers.com/r-3-3-0-is-released/"></div></div><div><a data-url="http://www.r-bloggers.com/r-3-3-0-is-released/" data-counturl="http://www.r-bloggers.com/r-3-3-0-is-released/" data-count="vertical" data-text="R 3.3.0 is released!" class="twitter-share-button" data-via="rbloggers" href="https://twitter.com/share"></a></div><div></div></div><div></div></div>
<div>
<div>To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="http://www.r-statistics.com/2016/05/r-3-3-0-is-released/"> R – R-statistics blog</a></strong>.</div>
<hr>
<a rel="nofollow" href="http://www.r-bloggers.com/">R-bloggers.com</a> offers <strong><a rel="nofollow" href="http://feedburner.google.com/fb/a/mailverify?uri=RBloggers">daily e-mail updates</a></strong> about <a title="The R Project for Statistical Computing" rel="nofollow" href="http://www.r-project.org/">R</a> news and <a title="R tutorials" rel="nofollow" href="http://www.r-bloggers.com/?s=tutorial">tutorials</a> on topics such as: <a title="Data science" rel="nofollow" href="http://www.r-bloggers.com/?s=data%20science">Data science</a>, <a title="Big Data" rel="nofollow" href="http://www.r-bloggers.com/?s=Big%20Data">Big Data, <a title="R jobs" rel="nofollow" href="http://www.r-users.com/">R jobs</a>, visualization (<a title="ggplot and ggplot2 tutorials" rel="nofollow" href="http://www.r-bloggers.com/?s=ggplot2">ggplot2</a>, <a title="Boxplots using lattice and ggplot2 tutorials" rel="nofollow" href="http://www.r-bloggers.com/?s=boxplot">Boxplots</a>, <a title="Maps and gis" rel="nofollow" href="http://www.r-bloggers.com/?s=map">maps</a>, <a title="Animation in R" rel="nofollow" href="http://www.r-bloggers.com/?s=animation">animation</a>), programming (<a title="RStudio IDE for R" rel="nofollow" href="http://www.r-bloggers.com/?s=RStudio">RStudio</a>, <a title="Sweave and literate programming" rel="nofollow" href="http://www.r-bloggers.com/?s=sweave">Sweave</a>, <a title="LaTeX in R" rel="nofollow" href="http://www.r-bloggers.com/?s=LaTeX">LaTeX</a>, <a title="SQL and databases" rel="nofollow" href="http://www.r-bloggers.com/?s=SQL">SQL</a>, <a title="Eclipse IDE for R" rel="nofollow" href="http://www.r-bloggers.com/?s=eclipse">Eclipse</a>, <a title="git and github, Version Control System" rel="nofollow" href="http://www.r-bloggers.com/?s=git">git</a>, <a title="Large data in R using Hadoop" rel="nofollow" href="http://www.r-bloggers.com/?s=hadoop">hadoop</a>, <a title="Web Scraping of google, facebook, yahoo, twitter and more using R" rel="nofollow" href="http://www.r-bloggers.com/?s=Web+Scraping">Web Scraping</a>) statistics (<a title="Regressions and ANOVA analysis tutorials" rel="nofollow" href="http://www.r-bloggers.com/?s=regression">regression</a>, <a title="principal component analysis tutorial" rel="nofollow" href="http://www.r-bloggers.com/?s=PCA">PCA</a>, <a title="Time series" rel="nofollow" href="http://www.r-bloggers.com/?s=time+series">time series</a>, <a title="finance trading" rel="nofollow" href="http://www.r-bloggers.com/?s=trading">trading</a>) and more...
<img height="1" alt="" width="1" src="http://feeds.feedburner.com/~r/RBloggers/~4/qenjZLLAEgs"></a></div></ul></ul>