<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>R-statistics blog</title>
	<atom:link href="https://www.r-statistics.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.r-statistics.com</link>
	<description>Statistics with R, and open source stuff (software, data, community)</description>
	<lastBuildDate>Fri, 28 Apr 2023 14:01:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<site xmlns="com-wordpress:feed-additions:1">13778530</site>	<item>
		<title>Seeking a New Maintainer for the Popular R Package installr</title>
		<link>https://www.r-statistics.com/2023/04/seeking-a-new-maintainer-for-the-popular-r-package-installr/</link>
					<comments>https://www.r-statistics.com/2023/04/seeking-a-new-maintainer-for-the-popular-r-package-installr/#comments</comments>
		
		<dc:creator><![CDATA[Tal Galili]]></dc:creator>
		<pubDate>Fri, 28 Apr 2023 14:00:40 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<category><![CDATA[R community]]></category>
		<category><![CDATA[installr]]></category>
		<category><![CDATA[windows]]></category>
		<guid isPermaLink="false">https://www.r-statistics.com/?p=61575</guid>

					<description><![CDATA[<p>TL;DR I&#8217;m seeking someone to take over maintenance of the the popular R package installr (github), due to a shift away from Windows OS. The package has been downloaded over 3.3 million times and has a current download rate of around 61k times a month. The ideal candidate should have experience with Windows OS, be &#8230; <a href="https://www.r-statistics.com/2023/04/seeking-a-new-maintainer-for-the-popular-r-package-installr/" class="more-link">Continue reading<span class="screen-reader-text"> "Seeking a New Maintainer for the Popular R Package installr"</span></a></p>
The post <a href="https://www.r-statistics.com/2023/04/seeking-a-new-maintainer-for-the-popular-r-package-installr/">Seeking a New Maintainer for the Popular R Package installr</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></description>
										<content:encoded><![CDATA[<div class="group w-full text-gray-800 dark:text-gray-100 border-b border-black/10 dark:border-gray-900/50 bg-gray-50 dark:bg-[#444654]">
<div class="text-base gap-4 md:gap-6 md:max-w-2xl lg:max-w-xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0 m-auto">
<div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]">
<div class="flex flex-grow flex-col gap-3">
<div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap break-words">
<div class="markdown prose w-full break-words dark:prose-invert dark">
<h1>TL;DR</h1>
<p>I&#8217;m seeking someone to take over maintenance of the the popular <a href="https://cran.r-project.org/web/packages/installr/index.html">R package installr</a> (<a href="https://github.com/talgalili/installr">github</a>), due to a shift away from Windows OS. The package has been downloaded <strong>over 3.3 million</strong> times and has a current download rate of around <strong>61k times a month</strong>. The ideal candidate should have experience with Windows OS, be an experienced R developer, and be passionate about helping fellow R users.</p>
<p>Interested? please <strong>leave a comment on the <a href="https://github.com/talgalili/installr/issues/183">github issue here</a>.</strong></p>
<p>&nbsp;</p>
</div>
</div>
</div>
</div>
</div>
</div>
<p><span id="more-61575"></span></p>
<h1>Details</h1>
<h2>Background</h2>
<p>Dear R Community,</p>
<p>As many of you may know, the <a href="https://cran.r-project.org/web/packages/installr/index.html">installr package</a> has been providing valuable functions for installing and updating software on Windows OS, with a particular focus on allowing R users to update R itself from the terminal (using the updateR() function). Over the years, this package has gained significant traction, and I&#8217;m grateful for the support and appreciation the community has shown.</p>
<p>To give you some insight into its popularity, installr has been downloaded over 3.3 million times, with a current download rate of around 61k times a month. It&#8217;s wonderful to see the positive impact this package has had on the R community, making it easier to keep R updated and install essential software for development and reproducible research.</p>
<p>You can find the GitHub repository for the installr package here: <a href="https://github.com/talgalili/installr" target="_new" rel="noopener">https://github.com/talgalili/installr</a> And the CRAN page for the package here: <a href="https://cran.r-project.org/web/packages/installr/index.html" target="_new" rel="noopener">https://cran.r-project.org/web/packages/installr/index.html</a> The current version of the package is 0.23.4.</p>
<h2>Looking for a maintainer</h2>
<p>However, as the current maintainer of the installr package, I have a personal update to share. About five years ago, I made the switch from Windows to Linux Mint, and I no longer see myself returning to Windows. Consequently, my ability to effectively maintain the installr package has become increasingly limited.</p>
<p>This is why I am reaching out to the community with a request. I am searching for someone enthusiastic and dedicated to take over the maintenance of the installr package (or at least co-maintain, I can still deal with uploading to CRAN). If you are an experienced R developer with a strong background in Windows OS, and you are passionate about helping fellow R users, this might be a great opportunity for you to make a significant contribution to the community.</p>
<p>Responsibilities of the maintainer would include:</p>
<ul>
<li>Addressing user-reported issues (see list <a href="https://github.com/talgalili/installr/issues">here</a>)</li>
<li>Updating and improving the package to keep up with the evolving R ecosystem</li>
<li>Ensuring compatibility with new software versions and Windows updates</li>
<li>Expanding the installr package&#8217;s functionality, if desired</li>
</ul>
<p>To express your interest or to learn more about the role, please get in touch with me by <strong>leaving a comment on the <a href="https://github.com/talgalili/installr/issues/183">github issue here</a>.</strong> I would be more than happy to discuss the role further and answer any questions you might have.</p>
<p>Thank you for your continued support, and I look forward to finding a new maintainer to carry the torch and ensure the installr package continues to be a valuable resource for the R community.</p>
<p>Best regards,</p>
<p>Tal Galili</p>
<p>&nbsp;</p>
<p><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2023/04/passing-the-tourch-2.jpg?w=840&#038;ssl=1" alt="Passing the torch" /></p>The post <a href="https://www.r-statistics.com/2023/04/seeking-a-new-maintainer-for-the-popular-r-package-installr/">Seeking a New Maintainer for the Popular R Package installr</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.r-statistics.com/2023/04/seeking-a-new-maintainer-for-the-popular-r-package-installr/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61575</post-id>	</item>
		<item>
		<title>How to install R 3.6.3 (NOT 4+) on Linux MINT 19.x (19.1, 19.2, 19.3)</title>
		<link>https://www.r-statistics.com/2022/07/how-to-install-r-3-6-3-not-4-on-linux-mint-19-x-19-1-19-2-19-3/</link>
					<comments>https://www.r-statistics.com/2022/07/how-to-install-r-3-6-3-not-4-on-linux-mint-19-x-19-1-19-2-19-3/#comments</comments>
		
		<dc:creator><![CDATA[Tal Galili]]></dc:creator>
		<pubDate>Sun, 03 Jul 2022 19:14:36 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<category><![CDATA[3.6.3]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linux mint]]></category>
		<category><![CDATA[MINT]]></category>
		<guid isPermaLink="false">https://www.r-statistics.com/?p=61550</guid>

					<description><![CDATA[<p>tl;dr On Linux MINT 19.2, I was only able to properly install R 3.6.3 (but NOT R 4+) The correct repos need to be updated in at least 2 files, only then can R be installed Did I miss any tips? please leave me a comment. Background I have tried, and failed, to install R &#8230; <a href="https://www.r-statistics.com/2022/07/how-to-install-r-3-6-3-not-4-on-linux-mint-19-x-19-1-19-2-19-3/" class="more-link">Continue reading<span class="screen-reader-text"> "How to install R 3.6.3 (NOT 4+) on Linux MINT 19.x (19.1, 19.2, 19.3)"</span></a></p>
The post <a href="https://www.r-statistics.com/2022/07/how-to-install-r-3-6-3-not-4-on-linux-mint-19-x-19-1-19-2-19-3/">How to install R 3.6.3 (NOT 4+) on Linux MINT 19.x (19.1, 19.2, 19.3)</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></description>
										<content:encoded><![CDATA[<h2>tl;dr</h2>
<ul>
<li>On Linux MINT 19.2, I was only able to properly install R 3.6.3 (but NOT R 4+)</li>
<li>The correct repos need to be updated in at least 2 files, only then can R be installed</li>
<li>Did I miss any tips? please leave me a comment.</li>
</ul>
<p><span id="more-61550"></span></p>
<h2>Background</h2>
<p>I have tried, and failed, to install R version 4+ on my Linux MINT 19.2. The following are the steps I took to remove my old versions of R and manage to install it again.</p>
<p>Some sources that helped me write this up:</p>
<ol>
<li><a href="https://cran.r-project.org/bin/linux/ubuntu/">Ubuntu Packages For R &#8211; Brief Instructions</a></li>
<li><a href="https://forums.linuxmint.com/viewtopic.php?f=42&amp;t=294961&amp;sid=7b9c4891d29a860a7add1253250b24fe">R 3.6 for Linux Mint 19.1</a></li>
<li><a href="https://forums.linuxmint.com/viewtopic.php?t=297881">[SOLVED] Installing R: unmet dependencies error</a></li>
<li><a href="https://stackoverflow.com/questions/61748723/problem-installing-r4-0-on-linux-mint-19-3/61818390#61818390">Problem installing R4.0 on LInux Mint 19.3</a></li>
<li><a href="https://computingforgeeks.com/how-to-install-r-and-rstudio-on-ubuntu-debian-mint/">Install R and RStudio on Ubuntu 22.04|20.04|18.04</a></li>
<li><a href="https://en.wikipedia.org/wiki/Linux_Mint#Releases">Linux MINT 19.x is basically Ubuntu 18.04</a></li>
</ol>
<h2>Step 1: remove old R + wrong repos</h2>
<p>Open a terminal window (ctrl+alt+T) and paste (shift + insert) the following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo apt purge r-base* r-recommended r-cran-*
sudo apt autoremove
sudo apt update</pre>
<p>Once it is all removed, we should make sure we don&#8217;t have any wrongly defined repos.</p>
<p>For that, make sure you have gedit installed, if not, install it in the terminal using:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo apt-get install gedit</pre>
<p>Once installed, we want to make sure we don&#8217;t have any wrong repos, run the following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo gedit /etc/apt/sources.list.d/additional-repositories.list</pre>
<p>And look for (and delete) lines that look like this:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran40/
deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran35/
deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/</pre>
<p>After these are all deleted, make sure to save (hence we must use sudo before gedit), also go into the following file:</p>
<p>&nbsp;</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo gedit /etc/apt/sources.list</pre>
<p>Once there make sure to remove any redundant lines from r-project. After all these lines  are gone, make sure to put in only the following line (notice the <span style="text-decoration: underline;"><strong>bionic</strong></span>-cran<span style="text-decoration: underline;"><strong>35</strong></span> at the end):</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/</pre>
<p>Exit and save. Now we can install R.</p>
<h2>Step 2: install R (+RStudio)</h2>
<p>Open a terminal window (ctrl+alt+T) and paste (shift + insert)&#8221;</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo apt update
sudo apt install r-base</pre>
<p>Once this is done, open R by typing &#8220;R&#8221; in the terminal. You can then get most of the packages you might want by simply running in R:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="r">install.packages("tidyverse")
install.packages("Rcpp")</pre>
<p>Lastly, the simplest way to get RStudio is to go to their <a href="https://www.rstudio.com/products/rstudio/download/#download">download page</a>, and choose the &#8220;Ubuntu 18+/Debian 10+&#8221; option. Download and run the file.</p>
<h2>Appendix &#8211; what could go wrong?</h2>
<p>If for some reason you have the wrong repo (ending with 40 instead of 35), such as:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran40/</pre>
<p>Then when trying to install R, you might get error massages such as:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">The following packages have unmet dependencies:
r-base-core : Depends: libc6 (&gt;= 2.29) but 2.27-3ubuntu1 is to be installed
Depends: libicu66 (&gt;= 66.1-1~) but it is not installable
Depends: libreadline8 (&gt;= 6.0) but it is not installable.</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>The post <a href="https://www.r-statistics.com/2022/07/how-to-install-r-3-6-3-not-4-on-linux-mint-19-x-19-1-19-2-19-3/">How to install R 3.6.3 (NOT 4+) on Linux MINT 19.x (19.1, 19.2, 19.3)</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.r-statistics.com/2022/07/how-to-install-r-3-6-3-not-4-on-linux-mint-19-x-19-1-19-2-19-3/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61550</post-id>	</item>
		<item>
		<title>heatmaply 1.0.0 &#8211; beautiful interactive cluster heatmaps in R</title>
		<link>https://www.r-statistics.com/2020/01/heatmaply-1-0-0-beautiful-interactive-cluster-heatmaps-in-r/</link>
					<comments>https://www.r-statistics.com/2020/01/heatmaply-1-0-0-beautiful-interactive-cluster-heatmaps-in-r/#respond</comments>
		
		<dc:creator><![CDATA[Tal Galili]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 14:32:01 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<category><![CDATA[visualization]]></category>
		<category><![CDATA[cluster heatmaps]]></category>
		<category><![CDATA[heatmap]]></category>
		<category><![CDATA[heatmaply]]></category>
		<guid isPermaLink="false">http://www.r-statistics.com/?p=61533</guid>

					<description><![CDATA[<p>I&#8217;m excited to announce that heatmaply version 1.0.0 has been published to CRAN! (getting started vignette is available here) What is heatmaply? heatmaply is an R package for easily creating interactive cluster heatmaps that can be shared online as a stand-alone HTML file. Interactivity includes a tooltip display of values when hovering over cells, as &#8230; <a href="https://www.r-statistics.com/2020/01/heatmaply-1-0-0-beautiful-interactive-cluster-heatmaps-in-r/" class="more-link">Continue reading<span class="screen-reader-text"> "heatmaply 1.0.0 &#8211; beautiful interactive cluster heatmaps in R"</span></a></p>
The post <a href="https://www.r-statistics.com/2020/01/heatmaply-1-0-0-beautiful-interactive-cluster-heatmaps-in-r/">heatmaply 1.0.0 – beautiful interactive cluster heatmaps in R</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></description>
										<content:encoded><![CDATA[<p><strong>I&#8217;m excited to announce that <a href="https://talgalili.github.io/heatmaply/">heatmaply</a> version 1.0.0 has been published to <a href="https://cran.r-project.org/web/packages/heatmaply/">CRAN!</a></strong> (getting started vignette is <a href="https://talgalili.github.io/heatmaply/articles/heatmaply.html">available here</a>)</p>
<h2>What is heatmaply?</h2>
<div class="gsh_csp"><em><strong><a href="https://talgalili.github.io/heatmaply/">heatmaply</a></strong></em> is an R package for easily creating interactive cluster heatmaps that can be shared online as a stand-alone HTML file. <strong>Interactivity</strong> includes a tooltip display of values when hovering over cells, as well as the ability to zoom in to specific sections of the figure from the data matrix, the side dendrograms, or annotated labels.</div>
<div class="gsh_csp">The package aims to be compatible with gplots::heatmap.2 so you could take code written for it and just change the heatmap.2 command to be heatmaply, and get the interactive version of the plot (although with slightly different, improved, defaults for colors and dendrogram ordering). Thanks to the synergistic relationship between <i>heatmaply</i> and other R packages, the user is empowered by a refined control over the statistical and visual aspects of the heatmap layout.</div>
<h2>What makes heatmaply great?</h2>
<div>The change from version 0.16.0 to version 1.0.0 is to indicate the maturity of the package. It is to reflect the following facts:</div>
<p><span id="more-61533"></span></p>
<ul>
<li> The first version of heatmaply (0.1.0) was released on 2016-05-14. Since then, the package has had over 16 version releases (see the <a href="https://talgalili.github.io/heatmaply/news/index.html">NEWS page</a> for changes across versions).</li>
<li>The package gets around 5,000 monthly downloads, and has been downloaded over 140,000 times as of today.</li>
<li>We published an academic paper on heatmaply in the bioinformatics journal: <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5925766/">heatmaply: an R package for creating interactive cluster heatmaps for online publishing</a>. The paper is open-access under CC-BY license. As of today, the paper has been <a href="https://scholar.google.com/citations?user=bKcE9BsAAAAJ&amp;hl=en#d=gs_md_cita-d&amp;u=%2Fcitations%3Fview_op%3Dview_citation%26hl%3Den%26user%3DbKcE9BsAAAAJ%26citation_for_view%3DbKcE9BsAAAAJ%3AldfaerwXgEUC%26tzom%3D-120">cited 47 times</a>.</li>
<li>The package has unit-tests and got <a href="https://codecov.io/github/talgalili/heatmaply?branch=master">90% code coverage</a>.</li>
<li>This package relies primarily on the packages plotly and dendextend. Both are very mature packages.</li>
<li>The package is maintained by two authors, <a href="https://github.com/talgalili/">Tal Galili</a> (me), and <a href="https://github.com/Alanocallaghan">Alan O&#8217;Callaghan</a> (who has been the main reason this package has gotten this far, providing a huge number of improvements and bug fixes!)</li>
</ul>
<h2>What can heatmaply do?</h2>
<div>Many things! You can learn about the various options in the <strong><a href="https://talgalili.github.io/heatmaply/articles/heatmaply.html">online vignette</a></strong>.</div>
<div></div>
<div>For example, running the following code will produce an interactive cluster heatmap of the mtcars dataset (after ranking the columns and normalizing them to range from 0 to 1):</div>
<pre lang="rsplus"># install.packages("heatmaply")
library(heatmaply)
mtcars_2 &lt;- percentize(mtcars)
heatmaply(mtcars_2, k_row = 4, k_col = 2)
# I got the static image using ggheatmap instead of heatmaply
</pre>
<div></div>
<div></div>
<div><a href="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2019/12/heatmaply_mtcars.png"><img data-recalc-dims="1" fetchpriority="high" decoding="async" data-attachment-id="61534" data-permalink="https://www.r-statistics.com/2020/01/heatmaply-1-0-0-beautiful-interactive-cluster-heatmaps-in-r/heatmaply_mtcars/" data-orig-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2019/12/heatmaply_mtcars.png?fit=612%2C442&amp;ssl=1" data-orig-size="612,442" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="heatmaply_mtcars" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2019/12/heatmaply_mtcars.png?fit=300%2C217&amp;ssl=1" data-large-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2019/12/heatmaply_mtcars.png?fit=612%2C442&amp;ssl=1" class="aligncenter size-full wp-image-61534" src="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2019/12/heatmaply_mtcars.png?resize=612%2C442" alt="" width="612" height="442" srcset="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2019/12/heatmaply_mtcars.png?w=612&amp;ssl=1 612w, https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2019/12/heatmaply_mtcars.png?resize=300%2C217&amp;ssl=1 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></a></div>
<h2>Stay in touch</h2>
<ul>
<li>The official package homepage is: <a href="https://talgalili.github.io/heatmaply/">https://talgalili.github.io/heatmaply/</a> where you can see the <a href="https://talgalili.github.io/heatmaply/news/index.html">recent NEWS</a>, <a href="https://talgalili.github.io/heatmaply/reference/index.html">documentation</a>, and <a href="https://talgalili.github.io/heatmaply/articles/heatmaply.html">vignette</a>.</li>
<li>Help us make the package better:
<ul>
<li>Ask questions on <a href="https://stackoverflow.com/questions/tagged/heatmaply">https://stackoverflow.com/questions/tagged/heatmaply</a></li>
<li>submit suggestions and bug-reports at: <a href="https://github.com/talgalili/heatmaply/issues">https://github.com/talgalili/heatmaply/issues</a></li>
<li>send a pull request on: <a href="https://github.com/talgalili/heatmaply/">https://github.com/talgalili/heatmaply/</a></li>
</ul>
</li>
<li>If you use the package in academic publication, please <a href="https://cran.r-project.org/web/packages/heatmaply/citation.html">cite our paper</a>.</li>
</ul>
<div>We hope you&#8217;ll enjoy <a href="https://talgalili.github.io/heatmaply/">heatmaply</a> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
<div></div>The post <a href="https://www.r-statistics.com/2020/01/heatmaply-1-0-0-beautiful-interactive-cluster-heatmaps-in-r/">heatmaply 1.0.0 – beautiful interactive cluster heatmaps in R</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.r-statistics.com/2020/01/heatmaply-1-0-0-beautiful-interactive-cluster-heatmaps-in-r/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61533</post-id>	</item>
		<item>
		<title>Registration for eRum 2018 closes in two days!</title>
		<link>https://www.r-statistics.com/2018/04/registration-for-erum-2018-closes-in-two-days/</link>
					<comments>https://www.r-statistics.com/2018/04/registration-for-erum-2018-closes-in-two-days/#comments</comments>
		
		<dc:creator><![CDATA[Tal Galili]]></dc:creator>
		<pubDate>Fri, 27 Apr 2018 12:15:47 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<guid isPermaLink="false">http://www.r-statistics.com/?p=61504</guid>

					<description><![CDATA[<p>Why I&#8217;m going to eRum this year instead of useR! I have attended the useR! conferences every year now for the past 9 years, and loved it! However, this year I&#8217;m saddened that I won&#8217;t be able to go. This is because this year the conference will be held in Australia, and going there would require &#8230; <a href="https://www.r-statistics.com/2018/04/registration-for-erum-2018-closes-in-two-days/" class="more-link">Continue reading<span class="screen-reader-text"> "Registration for eRum 2018 closes in two days!"</span></a></p>
The post <a href="https://www.r-statistics.com/2018/04/registration-for-erum-2018-closes-in-two-days/">Registration for eRum 2018 closes in two days!</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></description>
										<content:encoded><![CDATA[<h3><a href="https://2018.erum.io/"><img data-recalc-dims="1" decoding="async" data-attachment-id="61506" data-permalink="https://www.r-statistics.com/2018/04/registration-for-erum-2018-closes-in-two-days/erum-2018-hexa-new/" data-orig-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/erum-2018-hexa-new.png?fit=640%2C555&amp;ssl=1" data-orig-size="640,555" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="erum-2018-hexa-new" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/erum-2018-hexa-new.png?fit=300%2C260&amp;ssl=1" data-large-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/erum-2018-hexa-new.png?fit=640%2C555&amp;ssl=1" class="aligncenter size-medium wp-image-61506" src="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/erum-2018-hexa-new.png?resize=300%2C260" alt="" width="300" height="260" srcset="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/erum-2018-hexa-new.png?resize=300%2C260&amp;ssl=1 300w, https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/erum-2018-hexa-new.png?w=640&amp;ssl=1 640w" sizes="(max-width: 300px) 85vw, 300px" /></a></h3>
<h3>Why I&#8217;m going to eRum this year instead of useR!</h3>
<p><img data-recalc-dims="1" decoding="async" data-attachment-id="61505" data-permalink="https://www.r-statistics.com/2018/04/registration-for-erum-2018-closes-in-two-days/20180420_151342/" data-orig-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/20180420_151342.jpg?fit=659%2C879&amp;ssl=1" data-orig-size="659,879" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Maya and Tal NOT going to useR this year" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/20180420_151342.jpg?fit=225%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/20180420_151342.jpg?fit=659%2C879&amp;ssl=1" class="wp-image-61505 size-medium alignright" src="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/20180420_151342.jpg?resize=225%2C300" alt="" width="225" height="300" srcset="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/20180420_151342.jpg?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/20180420_151342.jpg?w=659&amp;ssl=1 659w" sizes="(max-width: 225px) 85vw, 225px" />I have attended the <a href="https://www.r-project.org/conferences.html">useR! conferences</a> every year now for the past 9 years, and loved it! However, this year I&#8217;m saddened that I won&#8217;t be able to go. This is because this year the conference <a href="https://user2018.r-project.org/">will be held in Australia</a>, and going there would require me to be away from home for at least 8 days (my heart goes to the people of Australia who had a hard time coming to useR all these years). Ordinarily I would do it, but given that my wife and I have a sweet 8 months year old baby (called Maya), I&#8217;m very reluctant to be away from home for that long.</p>
<h3>The eRum 2018 conference</h3>
<p>Fortunately for me, and for many other R users out there, we have a backup plan called <a href="https://2018.erum.io/">eRum</a> (a.k.a: The European R Users Meeting). It is an international conference, similar to <a href="https://www.r-project.org/conferences.html">useR!</a>, that occurs every two years (specifically, in the years in which useR is taking place outside of Europe), and organized by<a href="https://github.com/daroczig"> Gergely Daroczi</a> and others.</p>
<p>About the plan for this year:</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Time and location</strong></span>: the conference will take place on <span class="aBn" tabindex="0" data-term="goog_2043092449"><span class="aQJ">May 14-16, 2018</span></span> @ <a href="https://2018.erum.io/#venue">Budapest, Hungary</a></li>
<li><span style="text-decoration: underline;"><strong>Crowd size</strong></span>: The expectation is for ~500 R users from mostly Europe (you can see a visual breakdown of people&#8217;s <a href="https://appsilondatascience.com/blog/rstats/2018/03/30/sankey-erum.html">country of origin here</a>)</li>
<li><span style="text-decoration: underline;"><strong>Content</strong></span>: The program has <a href="https://2018.erum.io/#keynotes">5 keynote speakers</a>, <a href="https://2018.erum.io/#invited-speakers">12 invited speakers</a>, <a href="https://2018.erum.io/#workshop-tutors">7 tracks of workshops</a> and <a href="https://2018.erum.io/#schedule">2 tracks for contributed talks</a> (picked after sifting over 150 abstracts). Knowing some of the people in the program, I can vouch for the high quality of the program.</li>
<li><span style="text-decoration: underline;"><strong>The registration closes </strong></span><span class="aBn" tabindex="0" data-term="goog_2043092450"><span class="aQJ"><span style="text-decoration: underline;"><strong>this Sunday, so <a href="https://2018.erum.io/#registration">hurry up and register</a></strong></span>! (the price is relatively cheap, starting from 80 Euro for students, and up to 275 Euro for industry).</span></span></li>
</ul>
<p>If you get to see me around, feel free to come and say Hi <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><a href="https://2018.erum.io/"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="61507" data-permalink="https://www.r-statistics.com/2018/04/registration-for-erum-2018-closes-in-two-days/header/" data-orig-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/header.png?fit=1024%2C590&amp;ssl=1" data-orig-size="1024,590" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="header" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/header.png?fit=300%2C173&amp;ssl=1" data-large-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/header.png?fit=840%2C484&amp;ssl=1" class="aligncenter size-medium wp-image-61507" src="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/header.png?resize=300%2C173" alt="" width="300" height="173" srcset="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/header.png?resize=300%2C173&amp;ssl=1 300w, https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/header.png?resize=768%2C443&amp;ssl=1 768w, https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2018/04/header.png?w=1024&amp;ssl=1 1024w" sizes="auto, (max-width: 300px) 85vw, 300px" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>The post <a href="https://www.r-statistics.com/2018/04/registration-for-erum-2018-closes-in-two-days/">Registration for eRum 2018 closes in two days!</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.r-statistics.com/2018/04/registration-for-erum-2018-closes-in-two-days/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61504</post-id>	</item>
		<item>
		<title>R 3.5.0 is released! (major release with many new features)</title>
		<link>https://www.r-statistics.com/2018/04/r-3-5-0-is-released-major-release-with-many-new-features/</link>
					<comments>https://www.r-statistics.com/2018/04/r-3-5-0-is-released-major-release-with-many-new-features/#comments</comments>
		
		<dc:creator><![CDATA[Tal Galili]]></dc:creator>
		<pubDate>Tue, 24 Apr 2018 06:10:44 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<category><![CDATA[installr]]></category>
		<guid isPermaLink="false">http://www.r-statistics.com/?p=61502</guid>

					<description><![CDATA[<p>R 3.5.0 (codename &#8220;Joy in Playing&#8221;) was released yesterday. You can get the latest binaries version from here. (or the .tar.gz source code from here). This is a major release with many new features and bug fixes, the full list is provided below. Upgrading R on Windows and Mac If you are using Windows you can easily upgrade to the &#8230; <a href="https://www.r-statistics.com/2018/04/r-3-5-0-is-released-major-release-with-many-new-features/" class="more-link">Continue reading<span class="screen-reader-text"> "R 3.5.0 is released! (major release with many new features)"</span></a></p>
The post <a href="https://www.r-statistics.com/2018/04/r-3-5-0-is-released-major-release-with-many-new-features/">R 3.5.0 is released! (major release with many new features)</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></description>
										<content:encoded><![CDATA[<p style="direction: ltr;">R 3.5.0 (codename &#8220;Joy in Playing&#8221;) was <a href="https://stat.ethz.ch/pipermail/r-announce/2018/000628.html">released yesterday</a>. You can get the latest binaries version <strong><a href="https://cran.rstudio.com/" target="_blank" rel="noopener noreferrer">from here</a>.</strong> (or the .tar.gz <strong>source</strong> code from <a href="https://cran.r-project.org/src/base/R-3/R-3.5.0.tar.gz" target="_blank" rel="noopener noreferrer">here</a>).</p>
<p>This is a major release with many new features and bug fixes, the full list is provided below.</p>
<h3>Upgrading R on Windows and Mac</h3>
<p>If you are using <strong>Windows </strong>you can easily upgrade to the latest version of R using <a href="https://cran.r-project.org/web/packages/installr/" target="_blank" rel="noopener noreferrer">the installr package</a>. Simply run the following code in Rgui:</p>
<pre lang="rsplus">install.packages("installr") # install 
setInternet2(TRUE) # only for R versions older than 3.3.0
installr::updateR() # updating R.
# If you wish it to go faster, run: installr::updateR(T)</pre>
<p>Running &#8220;updateR()&#8221; will detect if there is a new R version available, and if so it will download+install it (etc.). There is also <a href="https://www.r-statistics.com/2015/06/a-step-by-step-screenshots-tutorial-for-upgrading-r-on-windows/" target="_blank" rel="noopener noreferrer">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).</p>
<p>If you are using <strong>Mac </strong>you can easily upgrade to the latest version of R using Andrea Cirillo&#8217;s <a href="https://github.com/AndreaCirilloAC/updateR">updateR package</a>. The package is not on CRAN, so you&#8217;ll need to run the following code in Rgui:</p>
<pre lang="rsplus">install.packages("devtools")
devtools::install_github("AndreaCirilloAC/updateR")
updateR(admin_password = "PASSWORD") # Where "PASSWORD" stands for your system password
</pre>
<p>Later this year Andrea and I intend to merge the updateR package into installr so that the updateR function will work seamlessly in both Windows and Mac. Stay tuned <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><span id="more-61502"></span></p>
<h3>CHANGES IN R 3.5.0</h3>
<h4>SIGNIFICANT USER-VISIBLE CHANGES</h4>
<ul>
<li>All packages are by default byte-compiled on installation. This makes the installed packages larger (usually marginally so) and may affect the format of messages and tracebacks (which often exclude <code>.Call</code> and similar).</li>
</ul>
<h4>NEW FEATURES</h4>
<ul>
<li><code>factor()</code> now uses <code>order()</code> to sort its levels, rather than <code>sort.list()</code>. This allows <code>factor()</code> to support custom vector-like objects if methods for the appropriate generics are defined. It has the side effect of making <code>factor()</code> succeed on empty or length-one non-atomic vector(-like) types (e.g., <code>"list"</code>), where it failed before.</li>
<li><code>diag()</code> gets an optional <code>names</code> argument: this may require updates to packages defining S4 methods for it.</li>
<li><code>chooseCRANmirror()</code> and <code>chooseBioCmirror()</code> no longer have a <code>useHTTPS</code> argument, not needed now all <b>R</b> builds support <span class="samp">https://</span> downloads.</li>
<li>New <code>summary()</code> method for <code>warnings()</code> with a (somewhat experimental) <code>print()</code> method.</li>
<li>(<span class="pkg">methods</span> package.) <code>.self</code> is now automatically registered as a global variable when registering a reference class method.</li>
<li><code>tempdir(check = TRUE)</code> recreates the <code>tempdir()</code> directory if it is no longer valid (e.g. because some other process has cleaned up the ‘<span class="file">/tmp</span>’ directory).</li>
<li>New <code>askYesNo()</code> function and <code>"askYesNo"</code> option to ask the user binary response questions in a customizable but consistent way. (Suggestion of <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17242">PR#17242</a>.)</li>
<li>New low level utilities <code>...elt(n)</code> and <code>...length()</code> for working with <code>...</code> parts inside a function.</li>
<li><code>isTRUE()</code> is more tolerant and now true in
<pre>   x &lt;- rlnorm(99)
   isTRUE(median(x) == quantile(x)["50%"])</pre>
<p>New function <code>isFALSE()</code> defined analogously to <code>isTRUE()</code>.</li>
<li>The default symbol table size has been increased from 4119 to 49157; this may improve the performance of symbol resolution when many packages are loaded. (Suggested by Jim Hester.)</li>
<li><code>line()</code> gets a new option <code>iter = 1</code>.</li>
<li>Reading from connections in text mode is buffered, significantly improving the performance of <code>readLines()</code>, as well as <code>scan()</code> and <code>read.table()</code>, at least when specifying <code>colClasses</code>.</li>
<li><code>order()</code> is smarter about picking a default sort <code>method</code> when its arguments are objects.</li>
<li><code>available.packages()</code> has two new arguments which control if the values from the per-session repository cache are used (default true, as before) and if so how old cached values can be to be used (default one hour).These arguments can be passed from <code>install.packages()</code>, <code>update.packages()</code> and functions calling that: to enable this <code>available.packages()</code>, <code>packageStatus()</code> and<code>download.file()</code> gain a <code>...</code> argument.</li>
<li><code>packageStatus()</code>&#8216;s <code>upgrade()</code> method no longer ignores its <code>...</code> argument but passes it to <code>install.packages()</code>.</li>
<li><code>installed.packages()</code> gains a <code>...</code> argument to allow arguments (including <code>noCache</code>) to be passed from <code>new.packages()</code>, <code>old.packages()</code>, <code>update.packages()</code> and <code>packageStatus()</code>.</li>
<li><code>factor(x, levels, labels)</code> now allows duplicated <code>labels</code> (not duplicated <code>levels</code>!). Hence you can map different values of <code>x</code> to the same level directly.</li>
<li>Attempting to use <code>names&lt;-()</code> on an S4 derivative of a basic type no longer emits a warning.</li>
<li>The <code>list</code> method of <code>within()</code> gains an option <code>keepAttrs = FALSE</code> for some speed-up.</li>
<li><code>system()</code> and <code>system2()</code> now allow the specification of a maximum elapsed time (‘timeout’).</li>
<li><code>debug()</code> supports debugging of methods on any object of S4 class <code>"genericFunction"</code>, including group generics.</li>
<li>Attempting to increase the length of a variable containing <code>NULL</code> using <code>length()&lt;-</code> still has no effect on the target variable, but now triggers a warning.</li>
<li><code>type.convert()</code> becomes a generic function, with additional methods that operate recursively over list and <code>data.frame</code> objects. Courtesy of Arni Magnusson (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17269">PR#17269</a>).</li>
<li><code>lower.tri(x)</code> and <code>upper.tri(x)</code> only needing <code>dim(x)</code> now work via new functions <code>.row()</code> and <code>.col()</code>, so no longer call <code>as.matrix()</code> by default in order to work efficiently for all kind of matrix-like objects.</li>
<li><code>print()</code> methods for <code>"xgettext"</code> and <code>"xngettext"</code> now use <code>encodeString()</code> which keeps, e.g. <code>"\n"</code>, visible. (Wish of <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17298">PR#17298</a>.)</li>
<li><code>package.skeleton()</code> gains an optional <code>encoding</code> argument.</li>
<li><code>approx()</code>, <code>spline()</code>, <code>splinefun()</code> and <code>approxfun()</code> also work for long vectors.</li>
<li><code>deparse()</code> and <code>dump()</code> are more useful for S4 objects, <code>dput()</code> now using the same internal C code instead of its previous imperfect workaround R code. S4 objects now typically deparse perfectly, i.e., can be recreated identically from deparsed code.<code>dput()</code>, <code>deparse()</code> and <code>dump()</code> now print the <code>names()</code> information only once, using the more readable <code>(tag = value)</code> syntax, notably for <code>list()</code>s, i.e., including data frames.
<p>These functions gain a new control option <code>"niceNames"</code> (see <code>.deparseOpts()</code>), which when set (as by default) also uses the <code>(tag = value)</code> syntax for atomic vectors. On the other hand, without deparse options <code>"showAttributes"</code> and <code>"niceNames"</code>, names are no longer shown also for lists. <code>as.character(list( c (one = 1)))</code> now includes the name, as <code>as.character(list(list(one = 1)))</code> has always done.</p>
<p><code>m:n</code> now also deparses nicely when <i>m &gt; n</i>.</p>
<p>The <code>"quoteExpressions"</code> option, also part of <code>"all"</code>, no longer <code>quote()</code>s formulas as that may not re-parse identically. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17378">PR#17378</a>)</li>
<li>If the option <code>setWidthOnResize</code> is set and <code>TRUE</code>, <b>R</b> run in a terminal using a recent <code>readline</code> library will set the <code>width</code> option when the terminal is resized. Suggested by Ralf Goertz.</li>
<li>If multiple <code>on.exit()</code> expressions are set using <code>add = TRUE</code> then all expressions will now be run even if one signals an error.</li>
<li><code>mclapply()</code> gets an option <code>affinity.list</code> which allows more efficient execution with heterogeneous processors, thanks to Helena Kotthaus.</li>
<li>The <code>character</code> methods for <code>as.Date()</code> and <code>as.POSIXlt()</code> are more flexible <em>via</em> new arguments <code>tryFormats</code> and <code>optional</code>: see their help pages.</li>
<li><code>on.exit()</code> gains an optional argument <code>after</code> with default <code>TRUE</code>. Using <code>after = FALSE</code> with <code>add = TRUE</code> adds an exit expression before any existing ones. This way the expressions are run in a first-in last-out fashion. (From Lionel Henry.)</li>
<li>On Windows, <code>file.rename()</code> internally retries the operation in case of error to attempt to recover from possible anti-virus interference.</li>
<li>Command line completion on <span class="samp">::</span> now also includes lazy-loaded data.</li>
<li>If the <span class="env">TZ</span> environment variable is set when date-time functions are first used, it is recorded as the session default and so will be used rather than the default deduced from the OS if <span class="env">TZ</span> is subsequently unset.</li>
<li>There is now a <code>[</code> method for class <code>"DLLInfoList"</code>.</li>
<li><code>glm()</code> and <code>glm.fit</code> get the same <code>singular.ok = TRUE</code> argument that <code>lm()</code> has had forever. As a consequence, in <code>glm(*, method = &lt;your_own&gt;)</code>, user specified methods need to accept a <code>singular.ok</code> argument as well.</li>
<li><code>aspell()</code> gains a filter for Markdown (‘<span class="file">.md</span>’ and ‘<span class="file">.Rmd</span>’) files.</li>
<li><code>intToUtf8(multiple = FALSE)</code> gains an argument to allow surrogate pairs to be interpreted.</li>
<li>The maximum number of DLLs that can be loaded into R e.g. <em>via</em> <code>dyn.load()</code> has been increased up to 614 when the OS limit on the number of open files allows.</li>
<li><code>Sys.timezone()</code> on a Unix-alike caches the value at first use in a session: <em>inter alia</em> this means that setting <span class="env">TZ</span> later in the session affects only the <em>current</em> time zone and not the <em>system</em> one.<code>Sys.timezone()</code> is now used to find the system timezone to pass to the code used when <b>R</b> is configured with <span class="option">&#8211;with-internal-tzcode</span>.</li>
<li>When <code>tar()</code> is used with an external command which is detected to be GNU <code>tar</code> or libarchive <code>tar</code> (aka <code>bsdtar</code>), a different command-line is generated to circumvent line-length limits in the shell.</li>
<li><code>system(*, intern = FALSE)</code>, <code>system2()</code> (when not capturing output), <code>file.edit()</code> and <code>file.show()</code> now issue a warning when the external command cannot be executed.</li>
<li>The “default” (<code>"lm"</code> etc) methods of <code>vcov()</code> have gained new optional argument <code>complete = TRUE</code> which makes the <code>vcov()</code> methods more consistent with the <code>coef()</code>methods in the case of singular designs. The former (back-compatible) behavior is given by <code>vcov(*, complete = FALSE)</code>.</li>
<li><code>coef()</code> methods (for <code>lm</code> etc) also gain a <code>complete = TRUE</code> optional argument for consistency with <code>vcov()</code>.<br />
For <code>"aov"</code>, both <code>coef()</code> and <code>vcov()</code> methods remain back-compatibly consistent, using the <em>other</em> default, <code>complete = FALSE</code>.</li>
<li><code>attach(*, pos = 1)</code> is now an error instead of a warning.</li>
<li>New function <code>getDefaultCluster()</code> in package <span class="pkg">parallel</span> to get the default cluster set via <code>setDefaultCluster()</code>.</li>
<li><code>str(x)</code> for atomic objects <code>x</code> now treats both cases of <code>is.vector(x)</code> similarly, and hence much less often prints <code>"atomic"</code>. This is a slight non-back-compatible change producing typically both more informative and shorter output.</li>
<li><code>write.dcf()</code> gets optional argument <code>useBytes</code>.</li>
<li>New, partly experimental <code>packageDate()</code> which tries to get a valid <code>"Date"</code> object from a package ‘<span class="file">DESCRIPTION</span>’ file, thanks to suggestions in <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17324">PR#17324</a>.</li>
<li><code>tools::resaveRdaFiles()</code> gains a <code>version</code> argument, for use when packages should remain compatible with earlier versions of <b>R</b>.</li>
<li><code>ar.yw(x)</code> and hence by default <code>ar(x)</code> now work when <code>x</code> has <code>NA</code>s, mostly thanks to a patch by Pavel Krivitsky in <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17366">PR#17366</a>. The <code>ar.yw.default()</code>&#8216;s AIC computations have become more efficient by using <code>determinant()</code>.</li>
<li>New <code>warnErrList()</code> utility (from package <span class="pkg">nlme</span>, improved).</li>
<li>By default the (arbitrary) signs of the loadings from <code>princomp()</code> are chosen so the first element is non-negative.</li>
<li>If <span class="option">&#8211;default-packages</span> is not used, then <code>Rscript</code> now checks the environment variable <span class="env">R_SCRIPT_DEFAULT_PACKAGES</span>. If this is set, then it takes precedence over <span class="env">R_DEFAULT_PACKAGES</span>. If default packages are not specified on the command line or by one of these environment variables, then <code>Rscript</code> now uses the same default packages as <code>R</code>. For now, the previous behavior of not including <span class="pkg">methods</span> can be restored by setting the environment variable <span class="env">R_SCRIPT_LEGACY</span> to <span class="samp">yes</span>.</li>
<li>When a package is found more than once, the warning from <code>find.package(*, verbose=TRUE)</code> lists all library locations.</li>
<li>POSIXt objects can now also be rounded or truncated to month or year.</li>
<li><code>stopifnot()</code> can be used alternatively via new argument <code>exprs</code> which is nicer and useful when testing several expressions in one call.</li>
<li>The environment variable <span class="env">R_MAX_VSIZE</span> can now be used to specify the maximal vector heap size. On macOS, unless specified by this environment variable, the maximal vector heap size is set to the maximum of 16GB and the available physical memory. This is to avoid having the <code>R</code> process killed when macOS over-commits memory.</li>
<li><code>sum(x)</code> and <code>sum(x1,x2,..,x&lt;N&gt;)</code> with many or long logical or integer vectors no longer overflows (and returns <code>NA</code> with a warning), but returns <code>double</code> numbers in such cases.</li>
<li>Single components of <code>"POSIXlt"</code> objects can now be extracted and replaced via <code>[</code> indexing with 2 indices.</li>
<li>S3 method lookup now searches the namespace registry after the top level environment of the calling environment.</li>
<li>Arithmetic sequences created by <code>1:n</code>, <code>seq_along</code>, and the like now use compact internal representations via the <code>ALTREP</code> framework. Coercing integer and numeric vectors to character also now uses the <code>ALTREP</code> framework to defer the actual conversion until first use.</li>
<li>Finalizers are now run with interrupts suspended.</li>
<li><code>merge()</code> gains new option <code>no.dups</code> and by default suffixes the second of two duplicated column names, thanks to a proposal by Scott Ritchie (and Gabe Becker).</li>
<li><code>scale.default(x, center, scale)</code> now also allows <code>center</code> or <code>scale</code> to be “numeric-alike”, i.e., such that <code>as.numeric(.)</code> coerces them correctly. This also eliminates a wrong error message in such cases.</li>
<li><code>par*apply</code> and <code>par*applyLB</code> gain an optional argument <code>chunk.size</code> which allows to specify the granularity of scheduling.</li>
<li>Some <code>as.data.frame()</code> methods, notably the <code>matrix</code> one, are now more careful in not accepting duplicated or <code>NA</code> row names, and by default produce unique non-NA row names. This is based on new function <code>.rowNamesDF(x, make.names = *) &lt;- rNms</code> where the logical argument <code>make.names</code> allows to specify <em>how</em> invalid row names <code>rNms</code> are handled. <code>.rowNamesDF()</code> is a “workaround” compatible default.</li>
<li>R has new serialization format (version 3) which supports custom serialization of <code>ALTREP</code> framework objects. These objects can still be serialized in format 2, but less efficiently. Serialization format 3 also records the current native encoding of unflagged strings and converts them when de-serialized in R running under different native encoding. Format 3 comes with new serialization magic numbers (RDA3, RDB3, RDX3). Format 3 can be selected by <code>version = 3</code> in <code>save()</code>, <code>serialize()</code> and <code>saveRDS()</code>, but format 2 remains the default for all serialization and saving of the workspace. Serialized data in format 3 cannot be read by versions of <b>R</b> prior to version 3.5.0.</li>
<li>The <code>"Date"</code> and “date-time” classes <code>"POSIXlt"</code> and <code>"POSIXct"</code> now have a working <code>`length&lt;-`</code> method, as wished in <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17387">PR#17387</a>.</li>
<li><code>optim(*, control = list(warn.1d.NelderMead = FALSE))</code> allows to turn off the warning when applying the default <code>"Nelder-Mead"</code> method to 1-dimensional problems.</li>
<li><code>matplot(.., panel.first = .)</code> etc now work, as <code>log</code> becomes explicit argument and <code>...</code> is passed to <code>plot()</code> unevaluated, as suggested by Sebastian Meyer in <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17386">PR#17386</a>.</li>
<li>Interrupts can be suspended while evaluating an expression using <code>suspendInterrupts</code>. Subexpression can be evaluated with interrupts enabled using <code>allowInterrupts</code>. These functions can be used to make sure cleanup handlers cannot be interrupted.</li>
<li><b>R</b> 3.5.0 includes a framework that allows packages to provide alternate representations of basic <b>R</b> objects (<code>ALTREP</code>). The framework is still experimental and may undergo changes in future <b>R</b> releases as more experience is gained. For now, documentation is provided in <a href="https://svn.r-project.org/R/branches/ALTREP/ALTREP.html">https://svn.r-project.org/R/branches/ALTREP/ALTREP.html</a>.</li>
</ul>
<h4>UTILITIES</h4>
<ul>
<li><code>install.packages()</code> for source packages now has the possibility to set a ‘timeout’ (elapsed-time limit). For serial installs this uses the <code>timeout</code> argument of <code>system2()</code>: for parallel installs it requires the <code>timeout</code> utility command from GNU <span class="pkg">coreutils</span>.</li>
<li>It is now possible to set ‘timeouts’ (elapsed-time limits) for most parts of <code>R CMD check</code> <em>via</em> environment variables documented in the ‘R Internals’ manual.</li>
<li>The ‘BioC extra’ repository which was dropped from Bioconductor 3.6 and later has been removed from <code>setRepositories()</code>. This changes the mapping for 6–8 used by <code>setRepositories(ind=)</code>.</li>
<li><code>R CMD check</code> now also applies the settings of environment variables <span class="env">_R_CHECK_SUGGESTS_ONLY_</span> and <span class="env">_R_CHECK_DEPENDS_ONLY_</span> to the re-building of vignettes.</li>
<li><code>R CMD check</code> with environment variable <span class="env">_R_CHECK_DEPENDS_ONLY_</span> set to a true value makes test-suite-management packages available and (for the time being) works around a common omission of <a href="https://cran.r-project.org/package=rmarkdown"><span class="pkg">rmarkdown</span></a> from the <span class="samp">VignetteBuilder</span> field.</li>
</ul>
<h4>INSTALLATION on a UNIX-ALIKE</h4>
<ul>
<li>Support for a system Java on macOS has been removed — install a fairly recent Oracle Java (see ‘R Installation and Administration’ §C.3.2).</li>
<li><code>configure</code> works harder to set additional flags in <span class="samp">SAFE_FFLAGS</span> only where necessary, and to use flags which have little or no effect on performance.In rare circumstances it may be necessary to override the setting of <span class="samp">SAFE_FFLAGS</span>.</li>
<li>C99 functions <code>expm1</code>, <code>hypot</code>, <code>log1p</code> and <code>nearbyint</code> are now required.</li>
<li><code>configure</code> sets a <span class="option">-std</span> flag for the C++ compiler for all supported C++ standards (e.g., <span class="option">-std=gnu++11</span> for the C++11 compiler). Previously this was not done in a few cases where the default standard passed the tests made (e.g. <code>clang 6.0.0</code> for C++11).</li>
</ul>
<h4>C-LEVEL FACILITIES</h4>
<ul>
<li>‘Writing R Extensions’ documents macros <code>MAYBE_REFERENCED</code>, <code>MAYBE_SHARED</code> and <code>MARK_NOT_MUTABLE</code> that should be used by package <code>C</code> code instead <code>NAMED</code> or <code>SET_NAMED</code>.</li>
<li>The object header layout has been changed to support merging the <code>ALTREP</code> branch. This requires re-installing packages that use compiled code.</li>
<li>‘Writing R Extensions’ now documents the <code>R_tryCatch</code>, <code>R_tryCatchError</code>, and <code>R_UnwindProtect</code> functions.</li>
<li><code>NAMEDMAX</code> has been raised to 3 to allow protection of intermediate results from (usually ill-advised) assignments in arguments to <code>BUILTIN</code> functions. Package <code>C</code> code using<code>SET_NAMED</code> may need to be revised.</li>
</ul>
<h4>DEPRECATED AND DEFUNCT</h4>
<ul>
<li><code>Sys.timezone(location = FALSE)</code> is defunct, and is ignored (with a warning).</li>
<li><code>methods:::bind_activation()</code> is defunct now; it typically has been unneeded for years.The undocumented ‘hidden’ objects <code>.__H__.cbind</code> and <code>.__H__.rbind</code> in package <span class="pkg">base</span> are deprecated (in favour of <code>cbind</code> and <code>rbind</code>).</li>
<li>The declaration of <code>pythag()</code> in ‘<span class="file">Rmath.h</span>’ has been removed — the entry point has not been provided since <b>R</b> 2.14.0.</li>
</ul>
<h4>BUG FIXES</h4>
<ul>
<li><code>printCoefmat()</code> now also works without column names.</li>
<li>The S4 methods on <code>Ops()</code> for the <code>"structure"</code> class no longer cause infinite recursion when the structure is not an S4 object.</li>
<li><code>nlm(f, ..)</code> for the case where <code>f()</code> has a <code>"hessian"</code> attribute now computes <i>LL&#8217; = H + µI</i> correctly. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17249">PR#17249</a>).</li>
<li>An S4 method that “rematches” to its generic and overrides the default value of a generic formal argument to <code>NULL</code> no longer drops the argument from its formals.</li>
<li><code>Rscript</code> can now accept more than one argument given on the <span class="samp">#!</span> line of a script. Previously, one could only pass a single argument on the <span class="samp">#!</span> line in Linux.</li>
<li>Connections are now written correctly with encoding <code>"UTF-16LE"</code>. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16737">PR#16737</a>).</li>
<li>Evaluation of <code>..0</code> now signals an error. When <code>..1</code> is used and <code>...</code> is empty, the error message is more appropriate.</li>
<li>(Windows mainly.) Unicode code points which require surrogate pairs in UTF-16 are now handled. All systems should properly handle surrogate pairs, even those systems that do not need to make use of them. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16098">PR#16098</a>)</li>
<li><code>stopifnot(e, e2, ...)</code> now evaluates the expressions sequentially and in case of an error or warning shows the relevant expression instead of the full <code>stopifnot(..)</code> call.</li>
<li><code>path.expand()</code> on Windows now accepts paths specified as UTF-8-encoded character strings even if not representable in the current locale. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17120">PR#17120</a>)</li>
<li><code>line(x, y)</code> now correctly computes the medians of the left and right group&#8217;s x-values and in all cases reproduces straight lines.</li>
<li>Extending S4 classes with slots corresponding to special attributes like <code>dim</code> and <code>dimnames</code> now works.</li>
<li>Fix for <code>legend()</code> when <code>fill</code> has multiple values the first of which is <code>NA</code> (all colours used to default to <code>par(fg)</code>). (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17288">PR#17288</a>)</li>
<li><code>installed.packages()</code> did not remove the cached value for a library tree that had been emptied (but would not use the old value, just waste time checking it).</li>
<li>The documentation for <code>installed.packages(noCache = TRUE)</code> incorrectly claimed it would refresh the cache.</li>
<li><code>aggregate(&lt;data.frame&gt;)</code> no longer uses spurious names in some cases. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17283">PR#17283</a>)</li>
<li><code>object.size()</code> now also works for long vectors.</li>
<li><code>packageDescription()</code> tries harder to solve re-encoding issues, notably seen in some Windows locales. This fixes the <code>citation()</code> issue in <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17291">PR#17291</a>.</li>
<li><code>poly(&lt;matrix&gt;, 3)</code> now works, thanks to prompting by Marc Schwartz.</li>
<li><code>readLines()</code> no longer segfaults on very large files with embedded <code>'\0'</code> (aka ‘nul’) characters. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17311">PR#17311</a>)</li>
<li><code>ns()</code> (package <span class="pkg">splines</span>) now also works for a single observation. <code>interpSpline()</code> gives a more friendly error message when the number of points is less than four.</li>
<li><code>dist(x, method = "canberra")</code> now uses the correct definition; the result may only differ when <code>x</code> contains values of differing signs, e.g. not for 0-1 data.</li>
<li><code>methods:::cbind()</code> and <code>methods:::rbind()</code> avoid deep recursion, thanks to Suharto Anggono via <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17300">PR#17300</a>.</li>
<li>Arithmetic with zero-column data frames now works more consistently; issue raised by Bill Dunlap.Arithmetic with data frames gives a data frame for <code>^</code> (which previously gave a numeric matrix).</li>
<li><code>pretty(x, n)</code> for large <code>n</code> or large <code>diff(range(x))</code> now works better (though it was never meant for large <code>n</code>); internally it uses the same rounding fuzz (1e-10) as <code>seq.default()</code> — as it did up to 2010-02-03 when both were 1e-7.</li>
<li>Internal C-level <code>R_check_class_and_super()</code> and hence <code>R_check_class_etc()</code> now also consider non-direct super classes and hence return a match in more cases. This e.g., fixes behaviour of derived classes in package <a href="https://cran.r-project.org/package=Matrix"><span class="pkg">Matrix</span></a>.</li>
<li>Reverted unintended change in behavior of <code>return</code> calls in <code>on.exit</code> expressions introduced by stack unwinding changes in <b>R</b> 3.3.0.</li>
<li>Attributes on symbols are now detected and prevented; attempt to add an attribute to a symbol results in an error.</li>
<li><code>fisher.test(*, workspace = &lt;n&gt;)</code> now may also increase the internal stack size which allows larger problem to be solved, fixing <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=1662">PR#1662</a>.</li>
<li>The <span class="pkg">methods</span> package no longer directly copies slots (attributes) into a prototype that is of an “abnormal” (reference) type, like a symbol.</li>
<li>The <span class="pkg">methods</span> package no longer attempts to call <code>length&lt;-()</code> on <code>NULL</code> (during the bootstrap process).</li>
<li>The <span class="pkg">methods</span> package correctly shows methods when there are multiple methods with the same signature for the same generic (still not fully supported, but at least the user can see them).</li>
<li><code>sys.on.exit()</code> is now always evaluated in the right frame. (From Lionel Henry.)</li>
<li><code>seq.POSIXt(*, by = "&lt;n&gt; DSTdays")</code> now should work correctly in all cases and is faster. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17342">PR#17342</a>)</li>
<li><code>.C()</code> when returning a logical vector now always maps values other than FALSE and NA to TRUE (as documented).</li>
<li>Subassignment with zero length vectors now coerces as documented (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17344">PR#17344</a>).<br />
Further, <code>x &lt;- numeric(); x[1] &lt;- character()</code> now signals an error ‘<code>replacement has length zero</code>’ (or a translation of that) instead of doing nothing.</li>
<li>(Package <span class="pkg">parallel</span>.) <code>mclapply()</code>, <code>pvec()</code> and <code>mcparallel()</code> (when <code>mccollect()</code> is used to collect results) no longer leave zombie processes behind.</li>
<li><code>R CMD INSTALL &lt;pkg&gt;</code> now produces the intended error message when, e.g., the <code>LazyData</code> field is invalid.</li>
<li><code>as.matrix(dd)</code> now works when the data frame <code>dd</code> contains a column which is a data frame or matrix, including a 0-column matrix/d.f. .</li>
<li><code>mclapply(X, mc.cores)</code> now follows its documentation and calls <code>lapply()</code> in case <code>mc.cores = 1</code> also in the case <code>mc.preschedule</code> is false. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17373">PR#17373</a>)</li>
<li><code>aggregate(&lt;data.frame&gt;, drop=FALSE)</code> no longer calls the function on &lt;empty&gt; parts but sets corresponding results to <code>NA</code>. (Thanks to Suharto Anggono&#8217;s patches in <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17280">PR#17280</a>).</li>
<li>The <code>duplicated()</code> method for data frames is now based on the <code>list</code> method (instead of string coercion). Consequently <code>unique()</code> is better distinguishing data frame rows, fixing <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17369">PR#17369</a> and <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17381">PR#17381</a>. The methods for matrices and arrays are changed accordingly.</li>
<li>Calling <code>names()</code> on an S4 object derived from <code>"environment"</code> behaves (by default) like calling <code>names()</code> on an ordinary environment.</li>
<li><code>read.table()</code> with a non-default separator now supports quotes following a non-whitespace character, matching the behavior of <code>scan()</code>.</li>
<li><code>parLapplyLB</code> and <code>parSapplyLB</code> have been fixed to do load balancing (dynamic scheduling). This also means that results of computations depending on random number generators will now really be non-reproducible, as documented.</li>
<li>Indexing a list using dollar and empty string (<code>l$""</code>) returns NULL.</li>
<li>Using <code>\usage{ data(&lt;name&gt;, package="&lt;pkg&gt;") } </code>no longer produces <code>R CMD check</code> warnings.</li>
<li><code>match.arg()</code> more carefully chooses the environment for constructing default <code>choices</code>, fixing <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17401">PR#17401</a> as proposed by Duncan Murdoch.</li>
<li>Deparsing of consecutive <code>!</code> calls is now consistent with deparsing unary <code>-</code> and <code>+</code> calls and creates code that can be reparsed exactly; thanks to a patch by Lionel Henry in<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17397">PR#17397</a>. (As a side effect, this uses fewer parentheses in some other deparsing involving <code>!</code> calls.)</li>
</ul>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="61379" data-permalink="https://www.r-statistics.com/2016/03/r-3-2-4-is-released/logo/" data-orig-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" data-orig-size="100,76" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="logo" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" data-large-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" class="alignnone size-full wp-image-61379" src="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?resize=100%2C76&#038;ssl=1" alt="logo" width="100" height="76" /></p>The post <a href="https://www.r-statistics.com/2018/04/r-3-5-0-is-released-major-release-with-many-new-features/">R 3.5.0 is released! (major release with many new features)</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.r-statistics.com/2018/04/r-3-5-0-is-released-major-release-with-many-new-features/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61502</post-id>	</item>
		<item>
		<title>R 3.4.3 is released (a bug-fix release)</title>
		<link>https://www.r-statistics.com/2017/12/r-3-4-3-is-released-a-bug-fix-release/</link>
					<comments>https://www.r-statistics.com/2017/12/r-3-4-3-is-released-a-bug-fix-release/#respond</comments>
		
		<dc:creator><![CDATA[Tal Galili]]></dc:creator>
		<pubDate>Fri, 08 Dec 2017 18:32:48 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<guid isPermaLink="false">http://www.r-statistics.com/?p=61497</guid>

					<description><![CDATA[<p>R 3.4.3 (codename &#8220;Kite-Eating Tree&#8221;) was released last week. You can get the latest binaries version from here. (or the .tar.gz source code from here). As mentioned by David Smith, R 3.4.3 is primarily a bug-fix release: It fixes an issue with incorrect time zones on MacOS High Sierra, and some issues with handling Unicode characters. (Incidentally, representing international and &#8230; <a href="https://www.r-statistics.com/2017/12/r-3-4-3-is-released-a-bug-fix-release/" class="more-link">Continue reading<span class="screen-reader-text"> "R 3.4.3 is released (a bug-fix release)"</span></a></p>
The post <a href="https://www.r-statistics.com/2017/12/r-3-4-3-is-released-a-bug-fix-release/">R 3.4.3 is released (a bug-fix release)</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></description>
										<content:encoded><![CDATA[<p style="direction: ltr;">R 3.4.3 (codename &#8220;Kite-Eating Tree&#8221;) was <a href="https://stat.ethz.ch/pipermail/r-announce/2017/000623.html">released last week</a>. You can get the latest binaries version <strong><a href="https://cran.rstudio.com/" target="_blank" rel="noopener noreferrer">from here</a>.</strong> (or the .tar.gz <strong>source</strong> code from <a href="https://cran.r-project.org/src/base/R-3/R-3.4.3.tar.gz" target="_blank" rel="noopener noreferrer">here</a>).</p>
<p>As mentioned by <a href="http://blog.revolutionanalytics.com/2017/11/r-343-released.html">David Smith</a>, R 3.4.3 is primarily a bug-fix release:</p>
<blockquote><p>It fixes an issue with incorrect time zones on MacOS High Sierra, and some issues with handling Unicode characters. (Incidentally, representing international and special characters is something that R takes great care in handling properly. It&#8217;s not an easy task: a 2003 essay by Joel Spolsky describes the <a href="https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/">minefield that is character representation</a>, and not much has changed since then.)</p></blockquote>
<p>The full list of bug fixes and new features is provided below.</p>
<h3>Upgrading to R 3.4.3 on Windows</h3>
<p>If you are using <strong>Windows </strong>you can easily upgrade to the latest version of R using <a href="https://cran.r-project.org/web/packages/installr/" target="_blank" rel="noopener noreferrer">the installr package</a>. Simply run the following code in Rgui:</p>
<pre lang="rsplus">install.packages("installr") # install 
setInternet2(TRUE) # only for R versions older than 3.3.0
installr::updateR() # updating R.
# If you wish it to go faster, run: installr::updateR(T)</pre>
<p>Running &#8220;updateR()&#8221; will detect if there is a new R version available, and if so it will download+install it (etc.). There is also <a href="https://www.r-statistics.com/2015/06/a-step-by-step-screenshots-tutorial-for-upgrading-r-on-windows/" target="_blank" rel="noopener noreferrer">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).</p>
<p><em>I try to keep the <a href="https://github.com/talgalili/installr">installr</a> package updated and useful, so if you have any suggestions or remarks on the package &#8211; you are invited to <a href="https://github.com/talgalili/installr/issues" target="_blank" rel="noopener noreferrer">open an issue in the github page</a>.</em></p>
<p><span id="more-61497"></span></p>
<h3>CHANGES IN R 3.4.3</h3>
<h4>INSTALLATION on a UNIX-ALIKE</h4>
<ul>
<li>A workaround has been added for the changes in location of time-zone files in macOS 10.13 ‘High Sierra’ and again in 10.13.1, so the default time zone is deduced correctly from the system setting when <b>R</b> is configured with <span class="option">&#8211;with-internal-tzcode</span> (the default on macOS).</li>
<li><code>R CMD javareconf</code> has been updated to recognize the use of a Java 9 SDK on macOS.</li>
</ul>
<h4>BUG FIXES</h4>
<ul>
<li><code>raw(0) &amp; raw(0)</code> and <code>raw(0) | raw(0)</code> again return <code>raw(0)</code> (rather than <code>logical(0)</code>).</li>
<li><code>intToUtf8()</code> converts integers corresponding to surrogate code points to <code>NA</code> rather than invalid UTF-8, as well as values larger than the current Unicode maximum of <code>0x10FFFF</code>. (This aligns with the current RFC3629.)</li>
<li>Fix calling of methods on S4 generics that dispatch on <code>...</code> when the call contains <code>...</code>.</li>
<li>Following Unicode ‘Corrigendum 9’, the UTF-8 representations of U+FFFE and U+FFFF are now regarded as valid by <code>utf8ToInt()</code>.</li>
<li><code>range(c(TRUE, NA), finite = TRUE)</code> and similar no longer return <code>NA</code>. (Reported by Lukas Stadler.)</li>
<li>The self starting function <code>attr(SSlogis, "initial")</code> now also works when the y values have exact minimum zero and is slightly changed in general, behaving symmetrically in the y range.</li>
<li>The printing of named raw vectors is now formatted nicely as for other such atomic vectors, thanks to Lukas Stadler.</li>
</ul>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="61379" data-permalink="https://www.r-statistics.com/2016/03/r-3-2-4-is-released/logo/" data-orig-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" data-orig-size="100,76" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="logo" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" data-large-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" class="alignnone size-full wp-image-61379" src="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?resize=100%2C76&#038;ssl=1" alt="logo" width="100" height="76" /></p>The post <a href="https://www.r-statistics.com/2017/12/r-3-4-3-is-released-a-bug-fix-release/">R 3.4.3 is released (a bug-fix release)</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.r-statistics.com/2017/12/r-3-4-3-is-released-a-bug-fix-release/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61497</post-id>	</item>
		<item>
		<title>heatmaply: an R package for creating interactive cluster heatmaps for online publishing</title>
		<link>https://www.r-statistics.com/2017/10/heatmaply-an-r-package-for-creating-interactive-cluster-heatmaps-for-online-publishing/</link>
					<comments>https://www.r-statistics.com/2017/10/heatmaply-an-r-package-for-creating-interactive-cluster-heatmaps-for-online-publishing/#comments</comments>
		
		<dc:creator><![CDATA[Tal Galili]]></dc:creator>
		<pubDate>Mon, 30 Oct 2017 14:07:54 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<category><![CDATA[R programming]]></category>
		<category><![CDATA[visualization]]></category>
		<category><![CDATA[Alan O'Callaghan]]></category>
		<category><![CDATA[Carson Sievert]]></category>
		<category><![CDATA[dendextend]]></category>
		<category><![CDATA[ggplot2]]></category>
		<category><![CDATA[heatmaply]]></category>
		<category><![CDATA[Jonathan Sidi]]></category>
		<category><![CDATA[R package]]></category>
		<category><![CDATA[yoni sidi]]></category>
		<guid isPermaLink="false">http://www.r-statistics.com/?p=61489</guid>

					<description><![CDATA[<p>This post on the heatmaply package is based on my recent paper from the journal bioinformatics (a link to a stable DOI). The paper was published just last week, and since it is released as CC-BY, I am permitted (and delighted) to republish it here in full. My co-authors for this paper are Jonathan Sidi, Alan O&#8217;Callaghan, and Carson Sievert. Summary: heatmaply is an R &#8230; <a href="https://www.r-statistics.com/2017/10/heatmaply-an-r-package-for-creating-interactive-cluster-heatmaps-for-online-publishing/" class="more-link">Continue reading<span class="screen-reader-text"> "heatmaply: an R package for creating interactive cluster heatmaps for online publishing"</span></a></p>
The post <a href="https://www.r-statistics.com/2017/10/heatmaply-an-r-package-for-creating-interactive-cluster-heatmaps-for-online-publishing/">heatmaply: an R package for creating interactive cluster heatmaps for online publishing</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></description>
										<content:encoded><![CDATA[<p><em>This post on the <a href="https://cran.r-project.org/web/packages/heatmaply/" target="_blank" rel="noopener">heatmaply package</a> is based on my <a href="https://doi.org/10.1093/bioinformatics/btx657" target="_blank" rel="noopener">recent paper from</a> the journal <a href="https://bioinformatics.oxfordjournals.org/" target="_blank" rel="noopener">bioinformatics</a> (a link to <a href="https://doi.org/10.1093/bioinformatics/btx657" target="_blank" rel="noopener">a stable DOI</a>). The paper was published just last week, and since it is released as <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noopener">CC-BY</a>, I am permitted (and delighted) to republish it here in full. My co-authors for this paper are <a href="https://github.com/yonicd">Jonathan Sidi</a>, <a href="https://github.com/Alanocallaghan">Alan O&#8217;Callaghan</a>, and <a href="https://github.com/cpsievert">Carson Sievert</a>.</em></p>
<p><strong>Summary:</strong> <a href="https://cran.r-project.org/web/packages/heatmaply/"><em>heatmaply</em></a> is an R package for easily creating interactive cluster heatmaps that can be shared online as a stand-alone HTML file. Interactivity includes a tooltip display of values when hovering over cells, as well as the ability to zoom in to specific sections of the figure from the data matrix, the side dendrograms, or annotated labels.  Thanks to the synergistic relationship between <em>heatmaply</em> and other R packages, the user is empowered by a refined control over the statistical and visual aspects of the heatmap layout.</p>
<p><strong>Availability:</strong> The <em>heatmaply</em> package is available under the GPL-2 Open Source license. It comes with a detailed vignette, and is freely available from: <a href="http://cran.r-project.org/package=heatmaply">http://cran.r-project.org/package=<em>heatmaply</em></a></p>
<p><span id="more-61489"></span></p>
<p><strong>Contact:</strong> <a href="mailto:Tal.Galili@math.tau.ac.il">Tal.Galili@math.tau.ac.il</a></p>
<h3>Introduction</h3>
<p>A cluster <a href="https://en.wikipedia.org/wiki/Heat_map">heatmap</a> is a popular graphical method for visualizing high dimensional data. In it, a table of numbers is scaled and encoded as a tiled matrix of colored cells. The rows and columns of the matrix are ordered to highlight patterns and are often accompanied by dendrograms and extra columns of categorical annotation. The ongoing development of this iconic visualization, spanning over more than a century, has provided the foundation for one of the most widely used of all bioinformatics displays (Wilkinson and Friendly, 2009). When using the R language for statistical computing (R Core Team, 2016), there are many available packages for producing static heatmaps, such as: <em>stats</em>, <a href="https://cran.r-project.org/web/packages/gplots/"><em>gplots</em></a>, <a href="https://cran.r-project.org/web/packages/heatmap3/"><em>heatmap3</em></a>, <a href="https://cran.r-project.org/web/packages/fheatmap/"><em>fheatmap</em></a>, <a href="https://cran.r-project.org/web/packages/pheatmap/"><em>pheatmap</em></a>, and others. Recently released packages also allow for more complex layouts; these include <a href="https://cran.r-project.org/web/packages/gapmap/"><em>gapmap</em></a>, <a href="https://cran.r-project.org/web/packages/superheat/"><em>superheat</em></a>, and <a href="https://cran.r-project.org/web/packages/ComplexHeatmap/"><em>ComplexHeatmap </em></a>(Gu <em>et al.</em>, 2016). The next evolutionary step has been to create interactive cluster heatmaps, and several solutions are already available. However, these solutions, such as the <a href="https://cran.r-project.org/web/packages/idendro/"><em>idendro</em> </a>R package (Sieger <em>et al.</em>, 2017), are often focused on providing an interactive output that can be explored only on the researcher&#8217;s personal computer. Some solutions do exist for creating shareable interactive heatmaps. However, these are either dependent on a specific online provider, such as XCMS Online, or require JavaScript knowledge to operate, such as InCHlib. In practice, when publishing in academic journals, the reader is left with a static figure only (often in a png or pdf format).</p>
<p>To fill this gap, we have developed the <a href="https://cran.r-project.org/web/packages/heatmaply/"><em>heatmaply</em> R package</a> for easily creating a shareable HTML file that contains an interactive cluster heatmap. The interactivity is based on a client-side JavaScript code that is generated based on the user&#8217;s data, after running the following command:</p>
<pre lang="rsplus">
install.packages("heatmaply")
library(heatmaply)
heatmaply(data, file = "my_heatmap.html")
</pre>
<p>The HTML file contains a publication-ready, interactive figure that allows the user to zoom in as well as see values when hovering over the cells. This self-contained HTML file can be made available to interested readers by uploading it to the researcher&#8217;s homepage or as a supplementary material in the journal&#8217;s server. Concurrently, this interactive figure can be displayed in RStudio&#8217;s viewer pane, included in a Shiny application, or embedded in a knitr/RMarkdown HTML documents.</p>
<p>The rest of this paper offers guidelines for creating effective cluster heatmap visualization. Figure 1 demonstrates the suggestions from this section on <a href="https://benjaminlmoore.wordpress.com/2015/04/09/recreating-the-vaccination-heatmaps-in-r/">data from project Tycho</a> (van Panhuis <em>et al.</em>, 2013), while the online supplementary information includes the interactive version, as well as several examples of using the package on real-world biological data.</p>
<p><strong>Fig. 1. The (square root) number of people infected by Measles in 50 states, from 1928 to 2003. Vaccines were introduced in 1963</strong></p>
<p><strong><a href="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/measles_heatmaply.html">click the image for the online interactive version of the plot</a></strong></p>
<p><a href="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/measles_heatmaply.html"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="61490" data-permalink="https://www.r-statistics.com/2017/10/heatmaply-an-r-package-for-creating-interactive-cluster-heatmaps-for-online-publishing/measles_heatmaply/" data-orig-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2017/10/measles_heatmaply.png?fit=700%2C450&amp;ssl=1" data-orig-size="700,450" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="measles_heatmaply" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2017/10/measles_heatmaply.png?fit=300%2C193&amp;ssl=1" data-large-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2017/10/measles_heatmaply.png?fit=700%2C450&amp;ssl=1" class="aligncenter size-full wp-image-61490" src="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2017/10/measles_heatmaply.png?resize=700%2C450" alt="" width="700" height="450" srcset="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2017/10/measles_heatmaply.png?w=700&amp;ssl=1 700w, https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2017/10/measles_heatmaply.png?resize=300%2C193&amp;ssl=1 300w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></a></p>
<h4>An interactive version of the measles heatmap (embedded in the post using iframe)</h3>
<p>I uploaded the measles_heatmaply.html to github and then used the following code to embed it in the post:</p>
<p>&lt;iframe src=&#8221;https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/measles_heatmaply.html&#8221; width=&#8221;450&#8243; height=&#8221;450&#8243; frameborder=&#8221;0&#8243; scrolling=&#8221;no&#8221;&gt;&lt;/iframe&gt;</p>
<p>Here is the result:</p>
<p><iframe loading="lazy" src="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/measles_heatmaply.html" width="450" height="450" frameborder="0" scrolling="no"></iframe></p>
<h3>heatmaply – a simple example</h3>
<p>The generation of cluster heatmaps is a subtle process (Gehlenborg and Wong, 2012; Weinstein, 2008), requiring the user to make many decisions along the way. The major decisions to be made deal with the data matrix and the dendrogram. The raw data often need to be transformed in order to have a meaningful and comparable scale, while an appropriate color palette should be picked. The clustering of the data requires us to decide on a distance measure between the observation, a linkage function, as well as a rotation and coloring of branches that manage to highlight interpretable clusters. Each such decision can have consequences on the patterns and interpretations that emerge. In this section, we go through some of the arguments in the function heatmaply, aiming to make it easy for the user to tune these important statistical and visual parameters. Our toy example visualizes the effect of vaccines on measles infection. The output is given in the static Fig. 1, while an interactive version is available online in the supplementary file &#8220;measles.html&#8221;. Both were created using:</p>
<pre lang="rsplus">
heatmaply(x = sqrt(measles),
           color = viridis, # the default
           Colv = NULL,
           hclust_method = "average", k_row = NA, # ...
           file = c("measles.html", "measles.png") )
</pre>
<p>The first argument of the function (x) accepts a matrix of the data. In the measles data, each row corresponds with a state, each column with a year (from 1928 to 2003), and each cell with the number of people infected with measles per 100,000 people. In this example, the data were scaled twice – first by not giving the raw number of cases with measles, but scaling them relatively to 100,000 people, thus making it possible to more easily compare between states. And second by taking the square root of the values. This was done since all the values in the data represent the same unit of measure, but come from a right-tailed distribution of count data with some extreme observations. Taking the square root helps with bringing extreme observations closer to one another, helping to avoid an extreme observation from masking the general pattern. Other transformations that may be considered come from Box-Cox or Yeo-Johnson family of power transformations. If each column of the data were to represent a different unit of measure, then leaving the values unchanged will often result in the entire figure being un-usable due to the column with the largest range of values taking over most of the colors in the figure. Possible per-column transformations include the scale function, suitable for data that are relatively normal. normalize, and percentize functions bring data to the comparable 0 to 1 scale for each column. The normalize function preserves the shape of each column’s distribution by subtracting the minimum and dividing by the maximum of all observations for each column. The percentize function is similar to ranking but with the simpler interpretation of each value being replaced by the percent of observations that have that value or below. It uses the empirical cumulative distribution function of each variable on its own values. The sparseness of the dataset can be explored using is.na10.</p>
<p>Once the data are adequately scaled, it is important to choose a good color palette for the data. Other than being pretty, an ideal color palette should have three (somewhat conflicting) properties: (1) Colorful, spanning as wide a palette as possible so as to make differences easy to see; (2) Perceptually uniform, so that values close to each other have similar-appearing colors compared with values that are far away, consistently across the range of values; and (3) Robust to colorblindness, so that the above properties hold true for people with common forms of colorblindness, as well as printing well in grey scale. The default passed to the color argument in heatmaply is viridis, which offers a sequential color palette, offering a good balance of these properties. Divergent color scale should be preferred when visualizing a correlation matrix, as it is important to make the low and high ends of the range visually distinct. A helpful divergent palette available in the package is cool_warm (other alternatives in the package include RdBu, BrBG, or RdYlBu, based on the <a href="https://cran.r-project.org/web/packages/RColorBrewer/"><em>RColorBrewer</em></a> package). It is also advisable to set the limits argument to range from -1 to 1.</p>
<p>Passing NULL to the Colv argument, in our example, removed the column dendrogram (since we wish to keep the order of the columns, relating to the years). The row dendrogram is automatically calculated using hclust with a Euclidean distance measure and the average linkage function. The user can choose to use an alternative clustering function (hclustfun), distance measure (dist_method), or linkage function (hclust_method), or to have a dendrogram only in the rows/columns or none at all (through the dendrogram argument). Also, the users can supply their own dendrogram objects into the Rowv (or Colv) arguments. The preparation of the dendrograms can be made easier using the <a href="https://cran.r-project.org/web/packages/dendextend/"><em>dendextend</em></a> R package (Galili, 2015) for comparing and adjusting dendrograms. These choices are all left for the user to decide. Setting the k_col/k_row argument to NA makes the function search for the number of clusters (between from 2 to 10) by which to color the branches of the dendrogram. The number picked is the one that yields the highest average silhouette coefficient (based on the find_k function from <a href="https://cran.r-project.org/web/packages/dendextend/"><em>dendextend</em></a>). Lastly, the heatmaply function uses the <a href="https://cran.r-project.org/web/packages/seriation/"><em>seriation</em></a> package to find an &#8220;optimal&#8221; ordering of rows and columns (Hahsler <em>et al.</em>, 2008). This is controlled using the seriation argument where the default is &#8220;OLO&#8221; (optimal-leaf-order) &#8211; which rotates the branches so that the sum of distances between each adjacent leaf (label) will be minimized (i.e.: optimize the Hamiltonian path length that is restricted by the dendrogram structure). The other arguments in the example were omitted since they are self-explanatory – the exact code is available in the supplementary material.</p>
<p>In order to make some of the above easier, we created the <a href="https://cran.r-project.org/web/packages/shinyHeatmaply/">shinyHeatmaply</a> package (available on CRAN) which offers a GUI to help guide the researcher with the heatmap construction, with the functionality to export the heatmap as an html file and summaries parameter specifications to reproduce the heatmap with heatmaply. For more detailed step-by-step demonstration of using heatmaply on biological datasets, you should explore the <a href="https://github.com/talgalili/heatmaplyExamples">heatmaplyExamples</a> package (at <a href="https://github.com/talgalili/heatmaplyExamples">github.com/talgalili/heatmaplyExamples</a>).</p>
<p>The following biological examples are available and fully reproducible from within the package. You may also view them online in the following links (the html files also include the R code for producing the figures):</p>
<ul>
<li><a href="https://cran.r-project.org/package=heatmaply/vignettes/heatmaply.html">Introduction to heatmaply</a></li>
<li>General biological examples
<ul>
<li><a href="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/measles.html">Using heatmaply with the measles data set</a> ( <a href="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/measles_heatmaply.html">the final output</a>)</li>
<li><a href="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/heatmaply_examples.html">Using heatmaply with famous data sets</a></li>
</ul>
</li>
<li>Reproducing heatmaps from papers published in Nature
<ul>
<li><a href="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/reproducing_Nature_2015_Kotsyfakis.html">Using heatmaply to reproduce Nature (2015) Kotsyfakis et al.</a></li>
<li><a href="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/reproducing_Nature_2015_Alfano.html">Using heatmaply to reproduce Nature (2015) Alfano et al.</a></li>
</ul>
</li>
<li>Using heatmaply with gene expression data
<ul>
<li><a href="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/biological_data.html">Visualization of raw and voom-transformed data (all genes)</a></li>
<li><a href="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/biological_data_2.html">Visualization of raw data (median-centered data, PAM50 genes only)</a></li>
<li><a href="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/biological_data_3.html">Visualization of voom-transformed data (median-centered data, PAM50 genes only)</a></li>
<li><a href="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/non_centred_heatmaps.html">Using heatmaply with non-centred RNAseq heatmaps (PAM50 genes)</a></li>
</ul>
</li>
<li>General examples
<ul>
<li><a href="https://cdn.rawgit.com/talgalili/heatmaplyExamples/master/inst/doc/glmnet.html">Using heatmaply for visualizing glmnet coefficient path</a></li>
</ul>
</li>
</ul>
<h3>Acknowledgements</h3>
<p>The heatmaply package was made possible by leveraging many wonderful R packages, including <a href="https://cran.r-project.org/web/packages/ggplot2/"><em>ggplot2</em></a> (Wickham, 2009), <a href="https://cran.r-project.org/web/packages/plotly/index.html"><em>plotly</em></a> (Sievert <em>et al.</em>, 2016), <a href="https://cran.r-project.org/web/packages/dendextend/"><em>dendextend</em></a> (Galili, 2015) and many others. We would also like to thank <a href="https://scholar.google.com/citations?user=eZ51GLAAAAAJ">Yoav Benjamini</a>, Madeline Bauer, and Marilyn Friedes for their helpful comments, as well as <a href="https://github.com/jcheng5">Joe Cheng</a> for initiating the collaboration with <a href="https://www.r-statistics.com/about/">Tal Galili</a> on <a href="https://github.com/rstudio/d3heatmap">d3heatmap</a>, which helped lay the foundation for heatmaply.</p>
<p><em>Funding</em>: This work was supported in part by the European Union Seventh Framework Programme (FP7/2007-2013) under grant agreement no. 604102 (Human Brain Project). <em> </em></p>
<p><em>Conflict of Interest</em>: none declared.</p>
<h3>References</h3>
<ul>
<li>Galili,T. (2015) dendextend: an R package for visualizing, adjusting and comparing trees of hierarchical clustering. <em>Bioinformatics</em>, <strong>31</strong>, 3718–3720.</li>
<li>Gehlenborg,N. and Wong,B. (2012) Points of view: Heat maps. <em>Nat. Methods</em>, <strong>9</strong>, 213–213.</li>
<li>Gu,Z. <em>et al.</em> (2016) Complex heatmaps reveal patterns and correlations in multidimensional genomic data. <em>Bioinformatics</em>, <strong>32</strong>, 2847–2849.</li>
<li>Hahsler,M. <em>et al.</em> (2008) Getting Things in Order : An Introduction to the R Package seriation. <em>J. Stat. Softw.</em>, <strong>25</strong>, 1–27.</li>
<li>van Panhuis,W.G. <em>et al.</em> (2013) Contagious Diseases in the United States from 1888 to the Present. <em>N. Engl. J. Med.</em>, <strong>369</strong>, 2152–2158.</li>
<li>R Core Team,(R Foundation for Statistical Computing) (2016) R: A Language and Environment for Statistical Computing.</li>
<li>Sieger,T. <em>et al.</em> (2017) Interactive Dendrograms: The R Packages idendro and idendr0. <em>J. Stat. Softw.</em>, <strong>76</strong>.</li>
<li>Sievert,C. <em>et al.</em> (2016) plotly: Create Interactive Web Graphics via ‘plotly.js’.</li>
<li>Weinstein,J.N. (2008) BIOCHEMISTRY: A Postgenomic Visual Icon. <em>Science (80-. ).</em>, <strong>319</strong>, 1772–1773.</li>
<li>Wickham,H. (2009) ggplot2 Elegant Graphics for Data Analysis.</li>
<li>Wilkinson,L. and Friendly,M. (2009) The History of the Cluster Heat Map. <em>Am. Stat.</em>, <strong>63</strong>, 179–184.</li>
</ul>The post <a href="https://www.r-statistics.com/2017/10/heatmaply-an-r-package-for-creating-interactive-cluster-heatmaps-for-online-publishing/">heatmaply: an R package for creating interactive cluster heatmaps for online publishing</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.r-statistics.com/2017/10/heatmaply-an-r-package-for-creating-interactive-cluster-heatmaps-for-online-publishing/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61489</post-id>	</item>
		<item>
		<title>R 3.4.2 is released (with several bug fixes and a few performance improvements)</title>
		<link>https://www.r-statistics.com/2017/09/r-3-4-2-is-released-with-several-bug-fixes-and-a-few-performance-improvements/</link>
					<comments>https://www.r-statistics.com/2017/09/r-3-4-2-is-released-with-several-bug-fixes-and-a-few-performance-improvements/#respond</comments>
		
		<dc:creator><![CDATA[Tal Galili]]></dc:creator>
		<pubDate>Fri, 29 Sep 2017 17:46:38 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<guid isPermaLink="false">http://www.r-statistics.com/?p=61486</guid>

					<description><![CDATA[<p>R 3.4.2 (codename &#8220;Short Summer&#8221;) was released yesterday. You can get the latest binaries version from here. (or the .tar.gz source code from here). As mentioned by David Smith, R 3.4.2 includes a performance improvement for names: c() and unlist() are now more efficient in constructing the names(.) of their return value, thanks to a proposal by Suharto Anggono. (PR#17284) The full list of bug &#8230; <a href="https://www.r-statistics.com/2017/09/r-3-4-2-is-released-with-several-bug-fixes-and-a-few-performance-improvements/" class="more-link">Continue reading<span class="screen-reader-text"> "R 3.4.2 is released (with several bug fixes and a few performance improvements)"</span></a></p>
The post <a href="https://www.r-statistics.com/2017/09/r-3-4-2-is-released-with-several-bug-fixes-and-a-few-performance-improvements/">R 3.4.2 is released (with several bug fixes and a few performance improvements)</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></description>
										<content:encoded><![CDATA[<p>R 3.4.2 (codename &#8220;Short Summer&#8221;) was <a href="https://stat.ethz.ch/pipermail/r-announce/2017/000619.html">released yesterday</a>. You can get the latest binaries version <strong><a href="https://cran.rstudio.com/" target="_blank" rel="noopener noreferrer">from here</a>.</strong> (or the .tar.gz <strong>source</strong> code from <a href="https://cran.r-project.org/src/base/R-3/R-3.4.2.tar.gz" target="_blank" rel="noopener noreferrer">here</a>).</p>
<p>As mentioned by <a href="http://blog.revolutionanalytics.com/2017/09/r-342-is-released.html">David Smith</a>, R 3.4.2 includes a performance improvement for names:</p>
<blockquote><p><code>c()</code> and <code>unlist()</code> are now more efficient in constructing the <code>names(.)</code> of their return value, thanks to a proposal by Suharto Anggono. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17284">PR#17284</a>)</p></blockquote>
<p>The full list of bug fixes and new features is provided below.</p>
<h3>Thank you <span class="gD" data-hovercard-id="murdoch.duncan@gmail.com">Duncan Murdoch</span> !</h3>
<p>On a related note, following the announcement on R 3.4.2, Duncan Murdoch <a href="https://stat.ethz.ch/pipermail/r-announce/2017/000620.html">wrote yesterday</a>:</p>
<blockquote><p>I&#8217;ve just finished the Windows build of R 3.4.2.  It will make it to CRAN and its mirrors over the next few hours.</p>
<p>This is the last binary release that I will be producing.  I&#8217;ve been building them for about 15 years, and it&#8217;s time to retire.  Builds using different tools and scripts are available from <a href="https://mran.microsoft.com/download/" target="_blank" rel="noreferrer noopener" data-saferedirecturl="https://www.google.com/url?hl=en&amp;q=https://mran.microsoft.com/download/&amp;source=gmail&amp;ust=1506793101849000&amp;usg=AFQjCNHzjuPM2ZT5QSd5iFiUX-64TW8HdQ">https://mran.microsoft.com/download/</a>.  I&#8217;ll be putting my own scripts on CRAN soon in case anyone wants to duplicate them.</p>
<p>Nightly builds of R-patched and R-devel will continue to run on autopilot for the time being, without maintenance.</p>
<p>I will also be retiring from maintenance of the Rtools collection.</p></blockquote>
<p>I am grateful to Duncan for contributing so much of his time and expertise throughout the years. And I am confident that other R users, using the binaries for the Windows OS, share this sentiment.</p>
<h3>Upgrading to R 3.4.2 on Windows</h3>
<p>If you are using <strong>Windows </strong>you can easily upgrade to the latest version of R using <a href="https://cran.r-project.org/web/packages/installr/" target="_blank" rel="noopener noreferrer">the installr package</a>. Simply run the following code in Rgui:</p>
<pre lang="rsplus">install.packages("installr") # install 
setInternet2(TRUE) # only for R versions older than 3.3.0
installr::updateR() # updating R.
# If you wish it to go faster, run: installr::updateR(T)</pre>
<p>Running &#8220;updateR()&#8221; will detect if there is a new R version available, and if so it will download+install it (etc.). There is also <a href="https://www.r-statistics.com/2015/06/a-step-by-step-screenshots-tutorial-for-upgrading-r-on-windows/" target="_blank" rel="noopener noreferrer">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).</p>
<p><em>I try to keep the <a href="https://github.com/talgalili/installr">installr</a> package updated and useful, so if you have any suggestions or remarks on the package &#8211; you are invited to <a href="https://github.com/talgalili/installr/issues" target="_blank" rel="noopener noreferrer">open an issue in the github page</a>.</em></p>
<p><span id="more-61486"></span></p>
<h3>CHANGES IN R 3.4.2</h3>
<h4>NEW FEATURES</h4>
<ul>
<li>Setting the <code>LC_ALL</code> category in <code>Sys.setlocale()</code> invalidates any cached locale-specific day/month names and the AM/PM indicator for <code>strptime()</code> (as setting <code>LC_TIME</code> has since <b>R</b> 3.1.0).</li>
<li>The version of LAPACK included in the sources has been updated to 3.7.1, a bug-fix release.</li>
<li>The default for <code>tools::write_PACKAGES(rds_compress=)</code> has been changed to <code>"xz"</code> to match the compression used by <acronym><span class="acronym">CRAN</span></acronym>.</li>
<li><code>c()</code> and <code>unlist()</code> are now more efficient in constructing the <code>names(.)</code> of their return value, thanks to a proposal by Suharto Anggono. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17284">PR#17284</a>)</li>
</ul>
<h4>UTILITIES</h4>
<ul>
<li><code>R CMD check</code> checks for and <code>R CMD build</code> corrects CRLF line endings in shell scripts <code>configure</code> and <code>cleanup</code> (even on Windows).</li>
</ul>
<h4>INSTALLATION on a UNIX-ALIKE</h4>
<ul>
<li>The order of selection of OpenMP flags has been changed: Oracle Developer Studio 12.5 accepts <span class="option">-fopenmp</span> and <span class="option">-xopenmp</span> but only the latter enables OpenMP so it is now tried first.</li>
</ul>
<h4>BUG FIXES</h4>
<ul>
<li><code>within(List, rm(x1, x2))</code> works correctly again, including when <code>List[["x2"]]</code> is <code>NULL</code>.</li>
<li><code>regexec(pattern, text, *)</code> now applies <code>as.character(.)</code> to its first two arguments, as documented.</li>
<li><code>write.table()</code> and related functions, <code>writeLines()</code>, and perhaps other functions writing text to connections did not signal errors when the writes failed, e.g. due to a disk being full. Errors will now be signalled if detected during the write, warnings if detected when the connection is closed. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17243">PR#17243</a>)</li>
<li><code>rt()</code> assumed the <code>ncp</code> parameter was a scalar. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17306">PR#17306</a>)</li>
<li><code>menu(choices)</code> with more than 10 choices which easily fit into one <code>getOption("width")</code>-line no longer erroneously repeats choices. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17312">PR#17312</a>)</li>
<li><code>length()&lt;-</code> on a pairlist succeeds. (<a href="https://stat.ethz.ch/pipermail/r-devel/2017-July/074680.html">https://stat.ethz.ch/pipermail/r-devel/2017-July/074680.html</a>)</li>
<li>Language objects such as <code>quote(("\n"))</code> or <b>R</b> functions are correctly printed again, where <b>R</b> 3.4.1 accidentally duplicated the backslashes.</li>
<li>Construction of <code>names()</code> for very large objects in <code>c()</code> and <code>unlist()</code> now works, thanks to Suharto Anggono&#8217;s patch proposals in <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17292">PR#17292</a>.</li>
<li>Resource leaks (and similar) reported by Steve Grubb fixed. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17314">PR#17314</a>, <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17316">PR#17316</a>, <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17317">PR#17317</a>, <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17318">PR#17318</a>, <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17319">PR#17319</a>, <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17320">PR#17320</a>)</li>
<li><code>model.matrix(~1, mf)</code> now gets the row names from <code>mf</code> also when they differ from <code>1:nrow(mf)</code>, fixing <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=14992">PR#14992</a> thanks to the suggestion by Sebastian Meyer.</li>
<li><code>sigma(fm)</code> now takes the correct denominator degrees of freedom for a fitted model with <code>NA</code> coefficients. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17313">PR#17313</a>)</li>
<li><code>hist(x, "FD")</code> no longer “dies” with a somewhat cryptic error message when <code>x</code> has extreme outliers or <code>IQR()</code> zero: <code>nclass.FD(x)</code> tries harder to find a robust bin width <i>h</i> in the latter case, and <code>hist.default(*, breaks)</code> now checks and corrects a too large <code>breaks</code> number. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17274">PR#17274</a>)</li>
<li><code>callNextMethod()</code> works for <code>...</code> methods.</li>
<li><code>qr.coef(qd, y)</code> now has correct names also when <code>qd</code> is a complex QR or stems from <code>qr(*, LAPACK=TRUE)</code>.</li>
<li>Setting <code>options(device = *)</code> to an invalid function no longer segfaults when plotting is initiated. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15883">PR#15883</a>)</li>
<li><code>encodeString(&lt;very large string&gt;)</code> no longer segfaults. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15885">PR#15885</a>)</li>
<li>It is again possible to use <code>configure --enable-maintainer-mode</code> without having installed <code>notangle</code> (it was required in <b>R</b> 3.4.[01]).</li>
<li>S4 method dispatch on <code>...</code> calls the method by name instead of <code>.Method</code> (for consistency with default dispatch), and only attempts to pass non-missing arguments from the generic.</li>
<li><code>readRDS(textConnection(.))</code> works again. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17325">PR#17325</a>)</li>
<li><code>(1:n)[-n]</code> no longer segfaults for <code>n &lt;- 2.2e9</code> (on a platform with enough RAM).</li>
<li><code>x &lt;- 1:2; tapply(x, list(x, x), function(x) "")[1,2]</code> now correctly returns <code>NA</code>. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17333">PR#17333</a>)</li>
<li>Running of finalizers after explicit GC request moved from the <b>R</b> interface <code>do_gc</code> to the <code>C</code> interface <code>R_gc</code>. This helps with reclaiming inaccessible connections.</li>
<li><code>help.search(topic)</code> and <code>??topic</code> matching topics in vignettes with multiple file name extensions (e.g., ‘<span class="file">*.md.rsp</span>’ but not ‘<span class="file">*.Rmd</span>’) failed with an error when using <code>options(help_type = "html")</code>.</li>
<li>The X11 device no longer uses the Xlib backing store (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16497">PR#16497</a>).</li>
<li><code>array(character(), 1)</code> now gives (a 1D array with) <code>NA</code> as has been documented for a long time as in the other cases of zero-length array initialization and also compatibly with<code>matrix(character(), *)</code>. As mentioned there, this also fixes <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17333">PR#17333</a>.</li>
<li><code>splineDesign(.., derivs = 4)</code> no longer segfaults.</li>
<li><code>fisher.test(*, hybrid=TRUE)</code> now (again) will use the hybrid method when Cochran&#8217;s conditions are met, fixing <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16654">PR#16654</a>.</li>
</ul>
<p>&nbsp;</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="61379" data-permalink="https://www.r-statistics.com/2016/03/r-3-2-4-is-released/logo/" data-orig-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" data-orig-size="100,76" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="logo" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" data-large-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" class="alignnone size-full wp-image-61379" src="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?resize=100%2C76&#038;ssl=1" alt="logo" width="100" height="76" /></p>The post <a href="https://www.r-statistics.com/2017/09/r-3-4-2-is-released-with-several-bug-fixes-and-a-few-performance-improvements/">R 3.4.2 is released (with several bug fixes and a few performance improvements)</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.r-statistics.com/2017/09/r-3-4-2-is-released-with-several-bug-fixes-and-a-few-performance-improvements/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61486</post-id>	</item>
		<item>
		<title>R 3.4.1 is released &#8211; with some Windows related bug-fixes</title>
		<link>https://www.r-statistics.com/2017/07/r-3-4-1-is-released-with-some-windows-related-bug-fixes/</link>
					<comments>https://www.r-statistics.com/2017/07/r-3-4-1-is-released-with-some-windows-related-bug-fixes/#comments</comments>
		
		<dc:creator><![CDATA[Tal Galili]]></dc:creator>
		<pubDate>Tue, 11 Jul 2017 07:02:27 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<guid isPermaLink="false">http://www.r-statistics.com/?p=61483</guid>

					<description><![CDATA[<p>R 3.4.1 (codename &#8220;Single Candle&#8221;) was released several days ago. You can get the latest binaries version from here. (or the .tar.gz source code from here). As mentioned last week by David Smith, R 3.4.1 includes several Windows related bug fixed: including an issue sometimes encountered when attempting to install packages on Windows, and problems displaying functions including Unicode characters &#8230; <a href="https://www.r-statistics.com/2017/07/r-3-4-1-is-released-with-some-windows-related-bug-fixes/" class="more-link">Continue reading<span class="screen-reader-text"> "R 3.4.1 is released &#8211; with some Windows related bug-fixes"</span></a></p>
The post <a href="https://www.r-statistics.com/2017/07/r-3-4-1-is-released-with-some-windows-related-bug-fixes/">R 3.4.1 is released – with some Windows related bug-fixes</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></description>
										<content:encoded><![CDATA[<p>R 3.4.1 (codename &#8220;Single Candle&#8221;) was <a href="https://stat.ethz.ch/pipermail/r-announce/2017/000616.html">released several days ago</a>. You can get the latest binaries version <strong><a href="https://cran.rstudio.com/" target="_blank" rel="noopener noreferrer">from here</a>.</strong> (or the .tar.gz <strong>source</strong> code from <a href="https://cran.r-project.org/src/base/R-3/R-3.4.1.tar.gz" target="_blank" rel="noopener noreferrer">here</a>).</p>
<p>As mentioned <a href="http://blog.revolutionanalytics.com/2017/06/r-341-single-candle-released.html">last week</a> by David Smith, R 3.4.1 includes several Windows related bug fixed:</p>
<blockquote><p>including an issue sometimes encountered when attempting to install packages on Windows, and problems displaying functions including Unicode characters (like &#8220;日本語&#8221;) in the Windows GUI.</p></blockquote>
<p>&nbsp;</p>
<p>The full list of bug fixes and new features is provided below.</p>
<h3>Upgrading to R 3.4.1 on Windows</h3>
<p>If you are using <strong>Windows </strong>you can easily upgrade to the latest version of R using <a href="https://cran.r-project.org/web/packages/installr/" target="_blank" rel="noopener noreferrer">the installr package</a>. Simply run the following code in Rgui:</p>
<pre lang="rsplus">install.packages("installr") # install 
setInternet2(TRUE) # only for R versions older than 3.3.0
installr::updateR() # updating R.
# If you wish it to go faster, run: installr::updateR(T)</pre>
<p><span style="line-height: 1.5;">Running &#8220;updateR()&#8221; will detect if there is a new R version available, and if so it will download+install it (etc.). There is also <a href="https://www.r-statistics.com/2015/06/a-step-by-step-screenshots-tutorial-for-upgrading-r-on-windows/" target="_blank" rel="noopener noreferrer">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 href="https://github.com/talgalili/installr">installr</a> package updated and useful, so if you have any suggestions or remarks on the package &#8211; you are invited to <a href="https://github.com/talgalili/installr/issues" target="_blank" rel="noopener noreferrer">open an issue in the github page</a>.</em></p>
<p><span id="more-61483"></span></p>
<h3>CHANGES IN R 3.4.1</h3>
<h4>INSTALLATION on a UNIX-ALIKE</h4>
<ul>
<li>The deprecated support for PCRE versions older than 8.20 has been removed.</li>
</ul>
<h4>BUG FIXES</h4>
<ul>
<li><code>getParseData()</code> gave incorrect column information when code contained multi-byte characters. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17254">PR#17254</a>)</li>
<li>Asking for help using expressions like <code>?stats::cor()</code> did not work. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17250">PR#17250</a>)</li>
<li><code>readRDS(url(....))</code> now works.</li>
<li><code>R CMD Sweave</code> again returns <span class="samp">status = 0</span> on successful completion.</li>
<li>Vignettes listed in ‘<span class="file">.Rbuildignore</span>’ were not being ignored properly. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17246">PR#17246</a>)</li>
<li><code>file.mtime()</code> no longer returns NA on Windows when the file or directory is being used by another process. This affected <code>installed.packages()</code>, which is now protected against this.</li>
<li><code>R CMD INSTALL</code> Windows .zip file obeys <code>--lock</code> and <code>--pkglock</code> flags.</li>
<li>(Windows only) The <code>choose.files()</code> function could return incorrect results when called with <code>multi = FALSE</code>. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17270">PR#17270</a>)</li>
<li><code>aggregate(&lt;data.frame&gt;, drop = FALSE)</code> now also works in case of near-equal numbers in <code>by</code>. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16918">PR#16918</a>)</li>
<li><code>fourfoldplot()</code> could encounter integer overflow when calculating the odds ratio. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17286">PR#17286</a>)</li>
<li><code>parse()</code> no longer gives spurious warnings when extracting srcrefs from a file not encoded in the current locale.
<p>This was seen from <code>R CMD check</code> with ‘<span class="file">inst/doc/*.R</span>’ files, and <code>check</code> has some additional protection for such files.</li>
<li><code>print.noquote(x)</code> now always returns its argument <code>x</code> (invisibly).</li>
<li>Non-UTF-8 multibyte character sets were not handled properly in source references. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16732">PR#16732</a>)</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="61379" data-permalink="https://www.r-statistics.com/2016/03/r-3-2-4-is-released/logo/" data-orig-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" data-orig-size="100,76" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="logo" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" data-large-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" class="alignnone size-full wp-image-61379" src="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?resize=100%2C76&#038;ssl=1" alt="logo" width="100" height="76" /></p>The post <a href="https://www.r-statistics.com/2017/07/r-3-4-1-is-released-with-some-windows-related-bug-fixes/">R 3.4.1 is released – with some Windows related bug-fixes</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.r-statistics.com/2017/07/r-3-4-1-is-released-with-some-windows-related-bug-fixes/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61483</post-id>	</item>
		<item>
		<title>R 3.4.0 is released &#8211; with new speed upgrades and bug-fixes</title>
		<link>https://www.r-statistics.com/2017/04/r-3-4-0-is-released-with-new-speed-upgrades-and-bug-fixes/</link>
					<comments>https://www.r-statistics.com/2017/04/r-3-4-0-is-released-with-new-speed-upgrades-and-bug-fixes/#comments</comments>
		
		<dc:creator><![CDATA[Tal Galili]]></dc:creator>
		<pubDate>Mon, 24 Apr 2017 09:14:22 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<guid isPermaLink="false">http://www.r-statistics.com/?p=61479</guid>

					<description><![CDATA[<p>R 3.4.0 (codename &#8220;You Stupid Darkness&#8221;) was released 3 days ago. You can get the latest binaries version from here. (or the .tar.gz source code from here). The full list of bug fixes and new features is provided below. As mentioned two months ago by David Smith, R 3.4.0 indicates several major changes aimed at improving the performance of R in &#8230; <a href="https://www.r-statistics.com/2017/04/r-3-4-0-is-released-with-new-speed-upgrades-and-bug-fixes/" class="more-link">Continue reading<span class="screen-reader-text"> "R 3.4.0 is released &#8211; with new speed upgrades and bug-fixes"</span></a></p>
The post <a href="https://www.r-statistics.com/2017/04/r-3-4-0-is-released-with-new-speed-upgrades-and-bug-fixes/">R 3.4.0 is released – with new speed upgrades and bug-fixes</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></description>
										<content:encoded><![CDATA[<p>R 3.4.0 (codename &#8220;You Stupid Darkness&#8221;) was <a href="https://stat.ethz.ch/pipermail/r-announce/2017/000612.html">released 3 days ago</a>. You can get the latest binaries version <strong><a href="https://cran.rstudio.com/" target="_blank" rel="noopener noreferrer">from here</a>.</strong> (or the .tar.gz <strong>source</strong> code from <a href="https://cran.r-project.org/src/base/R-3/R-3.4.0.tar.gz" target="_blank" rel="noopener noreferrer">here</a>). The full list of bug fixes and new features is provided below.</p>
<p>As mentioned <a href="http://blog.revolutionanalytics.com/2017/02/preview-r-340.html">two months ago</a> by David Smith, R 3.4.0 indicates several major changes aimed at <span style="text-decoration: underline;"><strong>improving the performance of R</strong></span> in various ways. These includes:</p>
<ul>
<li>The <a href="https://www.r-statistics.com/2012/04/speed-up-your-r-code-using-a-just-in-time-jit-compiler/">JIT (‘Just In Time’) byte-code compiler</a> is now enabled by default at its level 3. This means functions will be compiled on first or second use and top-level loops will be compiled and then run. (Thanks to Tomas Kalibera for extensive work to make this possible.) For now, the compiler will not compile code containing explicit calls to browser(): this is to support single stepping from the browser() call. JIT compilation can be disabled for the rest of the session using compiler::enableJIT(0) or by setting environment variable R_ENABLE_JIT to 0.</li>
<li>Matrix products now consistently bypass BLAS when the inputs have NaN/Inf values. Performance of the check of inputs has been improved. Performance when BLAS is used is improved for matrix/vector and vector/matrix multiplication (DGEMV is now used instead of DGEMM). One can now choose from alternative matrix product implementations via options(matprod = ). The &#8220;internal&#8221; implementation is not optimized for speed but consistent in precision with other summations in R (using long double accumulators where available). &#8220;blas&#8221; calls BLAS directly for best speed, but usually with undefined behavior for inputs with NaN/Inf.</li>
<li>Speedup in simplify2array() and hence sapply() and mapply() (for the case of names and common length #> 1), thanks to Suharto Anggono&#8217;s PR#17118.</li>
<li>Accumulating vectors in a loop is faster &#8211; Assigning to an element of a vector beyond the current length now over-allocates by a small fraction. The new vector is marked internally as growable, and the true length of the new vector is stored in the truelength field. This makes building up a vector result by assigning to the next element beyond the current length more efficient, though pre-allocating is still preferred. The implementation is subject to change and not intended to be used in packages at this time.</li>
<li>C-LEVEL FACILITIES have been extended.</li>
<li>Radix sort (which can be considered <a href="https://en.wikipedia.org/wiki/Radix_sort#Efficiency">more efficient for some cases</a>) is now chosen by method = &#8220;auto&#8221; for sort.int() for double vectors (and hence used for sort() for unclassed double vectors), excluding ‘long’ vectors. sort.int(method = &#8220;radix&#8221;) no longer rounds double vectors. The default method until R 3.2.0 was &#8220;shell&#8221;. A minimal comparison between the two shows that for very short vectors (100 values), &#8220;shell&#8221; would perform better. From a 1000 values, they are comparable, and for larger vectors &#8211; &#8220;radix&#8221; is doing 2-3 times faster (which is probably the use case for which we would care about more). More about this can be read in ?sort.int</li>
</ul>
<p>&nbsp;</p>
<pre lang="rsplus">#> 
#> set.seed(2017-04-24)
#> x  microbenchmark(shell = sort.int(x, method = "shell"), radix = sort.int(x, method = "radix"))
Unit: microseconds
  expr    min     lq     mean median     uq    max neval cld
 shell 15.775 16.606 17.80971 17.989 18.543 33.211   100  a 
 radix 32.657 34.595 35.67700 35.148 35.702 88.561   100   b
#> 
#> set.seed(2017-04-24)
#> x  microbenchmark(shell = sort.int(x, method = "shell"), radix = sort.int(x, method = "radix"))
Unit: microseconds
  expr    min     lq     mean median      uq    max neval cld
 shell 53.414 55.074 56.54395 56.182 57.0120 96.034   100   b
 radix 45.665 46.772 48.04222 47.325 48.1555 78.598   100  a 
#> 
#> set.seed(2017-04-24)
#> x  microbenchmark(shell = sort.int(x, method = "shell"), radix = sort.int(x, method = "radix"))
Unit: milliseconds
  expr      min       lq      mean    median        uq      max neval cld
 shell 93.33140 95.94478 107.75347 103.02756 115.33709 221.0800   100   b
 radix 38.18241 39.01516  46.47038  41.45722  47.49596 159.3518   100  a 
#> 
#> 

</pre>
<p>More about the changes in R case be read at <a href="http://blog.revolutionanalytics.com/2017/02/preview-r-340.html">the nice post by David Smith</a>, or in the list of changes given below.</p>
<p>&nbsp;</p>
<h3>Upgrading to R 3.4.0 on Windows</h3>
<p>If you are using <strong>Windows </strong>you can easily upgrade to the latest version of R using <a href="https://cran.r-project.org/web/packages/installr/" target="_blank" rel="noopener noreferrer">the installr package</a>. Simply run the following code in Rgui:</p>
<pre lang="rsplus">install.packages("installr") # install 
setInternet2(TRUE) # only for R versions older than 3.3.0
installr::updateR() # updating R.
# If you wish it to go faster, run: installr::updateR(T)</pre>
<p><span style="line-height: 1.5;">Running &#8220;updateR()&#8221; will detect if there is a new R version available, and if so it will download+install it (etc.). There is also <a href="https://www.r-statistics.com/2015/06/a-step-by-step-screenshots-tutorial-for-upgrading-r-on-windows/" target="_blank" rel="noopener noreferrer">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 href="https://github.com/talgalili/installr">installr</a> package updated and useful, so if you have any suggestions or remarks on the package &#8211; you are invited to <a href="https://github.com/talgalili/installr/issues" target="_blank" rel="noopener noreferrer">open an issue in the github page</a>.</em></p>
<p><span id="more-61479"></span></p>
<h3>CHANGES IN R 3.4.0</h3>
<h4>SIGNIFICANT USER-VISIBLE CHANGES</h4>
<ul>
<li>(Unix-alike) The default methods for <code>download.file()</code> and <code>url()</code> now choose <code>"libcurl"</code> except for <span class="samp">file://</span> URLs. There will be small changes in the format and wording of messages, including in rare cases if an issue is a warning or an error. For example, when HTTP re-direction occurs, some messages refer to the final URL rather than the specified one.Those who use proxies should check that their settings are compatible (see <code>?download.file</code>: the most commonly used forms work for both <code>"internal"</code> and <code>"libcurl"</code>).</li>
<li><code>table()</code> has been amended to be more internally consistent and become back compatible to <b>R</b> <i>&lt;=</i> 2.7.2 again. Consequently, <code>table(1:2, exclude = NULL)</code> no longer contains a zero count for <code>&lt;NA#></code>, but <code>useNA = "always"</code> continues to do so.</li>
<li><code>summary.default()</code> no longer rounds, but its print method does resulting in less extraneous rounding, notably of numbers in the ten thousands.</li>
<li><code>factor(x, exclude = L)</code> behaves more rationally when <code>x</code> or <code>L</code> are character vectors. Further, <code>exclude = &lt;factor#></code> now behaves as documented for long.</li>
<li>Arithmetic, logic (<code>&amp;</code>, <code>|</code>) and comparison (aka ‘relational’, e.g., <code>&lt;</code>, <code>==</code>) operations with arrays now behave consistently, notably for arrays of length zero.Arithmetic between length-1 arrays and longer non-arrays had silently dropped the array attributes and recycled. This now gives a warning and will signal an error in the future, as it has always for logic and comparison operations in these cases (e.g., compare <code>matrix(1,1) + 2:3</code> and <code>matrix(1,1) &lt; 2:3</code>).</li>
<li>The JIT (‘Just In Time’) byte-code compiler is now enabled by default at its level 3. This means functions will be compiled on first or second use and top-level loops will be compiled and then run. (Thanks to Tomas Kalibera for extensive work to make this possible.)For now, the compiler will not compile code containing explicit calls to <code>browser()</code>: this is to support single stepping from the <code>browser()</code> call.JIT compilation can be disabled for the rest of the session using <code>compiler::enableJIT(0)</code> or by setting environment variable <span class="env">R_ENABLE_JIT</span> to <code>0</code>.</li>
<li><code>xtabs()</code> works more consistently with <code>NA</code>s, also in its result no longer setting them to <code>0</code>. Further, a new logical option <code>addNA</code> allows to count <code>NA</code>s where appropriate. Additionally, for the case <code>sparse = TRUE</code>, the result&#8217;s <code>dimnames</code> are identical to the default case&#8217;s.</li>
<li>Matrix products now consistently bypass BLAS when the inputs have <code>NaN</code>/<code>Inf</code> values. Performance of the check of inputs has been improved. Performance when BLAS is used is improved for matrix/vector and vector/matrix multiplication (DGEMV is now used instead of DGEMM).One can now choose from alternative matrix product implementations <em>via</em> <code>options(matprod = )</code>. The <code>"internal"</code> implementation is not optimized for speed but consistent in precision with other summations in R (using <code>long double</code> accumulators where available). <code>"blas"</code> calls BLAS directly for best speed, but usually with undefined behavior for inputs with <code>NaN</code>/<code>Inf</code>.</li>
<li><code>factor()</code> now uses <code>order()</code> to sort its levels, not <code>sort.list()</code>. This makes <code>factor()</code> support custom vector-like objects if methods for the appropriate generics are defined. This change has the side effect of making <code>factor()</code> succeed on empty or length-one non-atomic vector(-like) types (e.g., list), where it failed before.</li>
</ul>
<h4>NEW FEATURES</h4>
<ul>
<li>User errors such as <code>integrate(f, 0:1, 2)</code> are now caught.</li>
<li>Add <code>signature</code> argument to <code>debug()</code>, <code>debugonce()</code>, <code>undebug()</code> and <code>isdebugged()</code> for more conveniently debugging S3 and S4 methods. (Based on a patch by Gabe Becker.)</li>
<li>Add <code>utils::debugcall()</code> and <code>utils::undebugcall()</code> for debugging the function that would be called by evaluating the given expression. When the call is to an S4 generic or standard S3 generic, <code>debugcall()</code> debugs the method that would be dispatched. A number of internal utilities were added to support this, most notably <code>utils::isS3stdGeneric()</code>. (Based on a patch by Gabe Becker.)</li>
<li>Add <code>utils::strcapture()</code>. Given a character vector and a regular expression containing capture expressions, <code>strcapture()</code> will extract the captured tokens into a tabular data structure, typically a <code>data.frame</code>.</li>
<li><code>str()</code> and <code>strOptions()</code> get a new option <code>drop.deparse.attr</code> with improved but <em>changed</em> default behaviour for expressions. For <code>expression</code>objects <code>x</code>, <code>str(x)</code> now may remove extraneous white space and truncate long lines.</li>
<li><code>str(&lt;looooooooong_string#>)</code> is no longer very slow; inspired by Mikko Korpela&#8217;s proposal in <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16527">PR#16527</a>.</li>
<li><code>str(x)</code>&#8216;s default method is more “accurate” and hence somewhat more generous in displaying character vectors; this will occasionally change <b>R</b>outputs (and need changes to some ‘<span class="file">*.Rout(.save)</span>’ files).<br />
For a classed integer vector such as <code>x &lt;- xtabs(~ c(1,9,9,9))</code>, <code>str(x)</code> now shows both the class and <code>"int"</code>, instead of only the latter.</li>
<li><code>isSymmetric(m)</code> is much faster for large asymmetric matrices <code>m</code> <em>via</em> pre-tests and a new option <code>tol1</code> (with which strict back compatibility is possible but not the default).</li>
<li>The result of <code>eigen()</code> now is of class <code>"eigen"</code> in the default case when eigenvectors are computed.</li>
<li>Zero-length date and date-time objects (of classes <code>"POSIX[cl]?t"</code>) now <code>print()</code> “recognizably”.</li>
<li><code>xy.coords()</code> and <code>xyz.coords()</code> get a new <code>setLab</code> option.</li>
<li>The <code>method</code> argument of <code>sort.list()</code>, <code>order()</code> and <code>sort.int()</code> gains an <code>"auto"</code> option (the default) which should behave the same as before when <code>method</code> was not supplied.</li>
<li><code>stopifnot(E, ..)</code> now reports differences when <code>E</code> is a call to <code>all.equal()</code> and that is not true.</li>
<li><code>boxplot(&lt;formula#>, *)</code> gain optional arguments <code>drop</code>, <code>sep</code>, and <code>lex.order</code> to pass to <code>split.default()</code> which itself gains an argument <code>lex.order</code>to pass to <code>interaction()</code> for more flexibility.</li>
<li>The <code>plot()</code> method for <code>ppr()</code> has enhanced default labels (<code>xmin</code> and <code>main</code>).</li>
<li><code>sample.int()</code> gains an explicit <code>useHash</code> option (with a back compatible default).</li>
<li><code>identical()</code> gains an <code>ignore.srcref</code> option which drops <code>"srcref"</code> and similar attributes when true (as by default).</li>
<li><code>diag(x, nrow = n)</code> now preserves <code>typeof(x)</code>, also for logical, integer and raw <code>x</code> (and as previously for complex and numeric).</li>
<li><code>smooth.spline()</code> now allows direct specification of <code>lambda</code>, gets a <code>hatvalues()</code> method and keeps <code>tol</code> in the result, and optionally parts of the internal matrix computations.</li>
<li><code>addNA()</code> is faster now, e.g. when applied twice. (Part of <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16895">PR#16895</a>.)</li>
<li>New option <code>rstandard(&lt;lm#>, type = "predicted")</code> provides the “PRESS”–related leave-one-out cross-validation errors for linear models.</li>
<li>After seven years of deprecation, duplicated factor levels now produce a warning when printed and an error in <code>levels&lt;-</code> instead of a warning.</li>
<li>Invalid factors, e.g., with duplicated levels (invalid but constructable) now give a warning when printed, <em>via</em> new function <code>.valid.factor()</code>.</li>
<li><code>sessionInfo()</code> has been updated for Apple&#8217;s change in OS naming as from ‘10.12’ (‘macOS Sierra’ <em>vs</em> ‘OS X El Capitan’).Its <code>toLatex()</code> method now includes the <code>running</code> component.</li>
<li><code>options(interrupt=)</code> can be used to specify a default action for user interrupts. For now, if this option is not set and the <code>error</code> option is set, then an unhandled user interrupt invokes the <code>error</code> option. (This may be dropped in the future as <code>interrupt</code> conditions are not <code>error</code>conditions.)</li>
<li>In most cases user interrupt handlers will be called with a <code>"resume"</code> restart available. Handlers can invoke this restart to resume computation. At the browser prompt the <code>r</code> command will invoke a <code>"resume"</code> restart if one is available. Some read operations cannot be resumed properly when interrupted and do not provide a <code>"resume"</code> restart.</li>
<li>Radix sort is now chosen by <code>method = "auto"</code> for <code>sort.int()</code> for double vectors (and hence used for <code>sort()</code> for unclassed double vectors), excluding ‘long’ vectors.<code>sort.int(method = "radix")</code> no longer rounds double vectors.</li>
<li>The <code>default</code> and <code>data.frame</code> methods for <code>stack()</code> preserve the names of empty elements in the levels of the <code>ind</code> column of the return value. Set the new <code>drop</code> argument to <code>TRUE</code> for the previous behavior.</li>
<li>Speedup in <code>simplify2array()</code> and hence <code>sapply()</code> and <code>mapply()</code> (for the case of names and common length #> 1), thanks to Suharto Anggono&#8217;s <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17118">PR#17118</a>.</li>
<li><code>table(x, exclude = NULL)</code> now sets <code>useNA = "ifany"</code> (instead of <code>"always"</code>). Together with the bug fixes for this case, this recovers more consistent behaviour compatible to older versions of <b>R</b>. As a consequence, <code>summary()</code> for a logical vector no longer reports (zero) counts for <code>NA</code>when there are no <code>NA</code>s.</li>
<li><code>dump.frames()</code> gets a new option <code>include.GlobalEnv</code> which allows to also dump the global environment, thanks to Andreas Kersting&#8217;s proposal in <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17116">PR#17116</a>.</li>
<li><code>system.time()</code> now uses <code>message()</code> instead of <code>cat()</code> when terminated early, such that <code>suppressMessages()</code> has an effect; suggested by Ben Bolker.</li>
<li><code>citation()</code> supports ‘<span class="file">inst/CITATION</span>’ files from package source trees, with <code>lib.loc</code> pointing to the directory containing the package.</li>
<li><code>try()</code> gains a new argument <code>outFile</code> with a default that can be modified <em>via</em> <code>options(try.outFile = .)</code>, useful notably for <code>Sweave</code>.</li>
<li>The unexported low-level functions in package <span class="pkg">parallel</span> for passing serialized <b>R</b> objects to and from forked children now support long vectors on 64-bit platforms. This removes some limits on higher-level functions such as <code>mclapply()</code> (but returning gigabyte results from forked processes <em>via</em> serialization should be avoided if at all possible).</li>
<li>Connections now <code>print()</code> without error even if invalid, e.g. after having been destroyed.</li>
<li><code>apropos()</code> and <code>find(simple.words = FALSE)</code> no longer match object names starting with <span class="samp">.</span> which are known to be internal objects (such as <code>.__S3MethodsTable__.</code>).</li>
<li>Convenience function <code>hasName()</code> has been added; it is intended to replace the common idiom <code>!is.null(x$name)</code> without the usually unintended partial name matching.</li>
<li><code>strcapture()</code> no longer fixes column names nor coerces strings to factors (suggested by Bill Dunlap).</li>
<li><code>strcapture()</code> returns <code>NA</code> for non-matching values in <code>x</code> (suggested by Bill Dunlap).</li>
<li><code>source()</code> gets new optional arguments, notably <code>exprs</code>; this is made use of in the new utility function <code>withAutoprint()</code>.</li>
<li><code>sys.source()</code> gets a new <code>toplevel.env</code> argument. This argument is useful for frameworks running package tests; contributed by Tomas Kalibera.</li>
<li><code>Sys.setFileTime()</code> and <code>file.copy(copy.date = TRUE)</code> will set timestamps with fractions of seconds on platforms/filesystems which support this.</li>
<li>(Windows only.) <code>file.info()</code> now returns file timestamps including fractions of seconds; it has done so on other platforms since <b>R</b> 2.14.0. (NB: some filesystems do not record modification and access timestamps to sub-second resolution.)</li>
<li>The license check enabled by <code>options(checkPackageLicense = TRUE)</code> is now done when the package&#8217;s namespace is first loaded.</li>
<li><code>ppr()</code> and <code>supsmu()</code> get an optional <code>trace</code> argument, and <code>ppr(.., sm.method = ..spline)</code> is no longer limited to sample size <i>n &lt;= 2500</i>.</li>
<li>The <code>POSIXct</code> method for <code>print()</code> gets optional <code>tz</code> and <code>usetz</code> arguments, thanks to a report from Jennifer S. Lyon.</li>
<li>New function <code>check_packages_in_dir_details()</code> in package <span class="pkg">tools</span> for analyzing package-check log files to obtain check details.</li>
<li>Package <span class="pkg">tools</span> now exports function <code>CRAN_package_db()</code> for obtaining information about current packages in the <acronym><span class="acronym">CRAN</span></acronym> package repository, and several functions for obtaining the check status of these packages.</li>
<li>The (default) Stangle driver <code>Rtangle</code> allows <code>annotate</code> to be a function and gets a new <code>drop.evalFALSE</code> option.</li>
<li>The default method for <code>quantile(x, prob)</code> should now be monotone in <code>prob</code>, even in border cases, see <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16672">PR#16672</a>.</li>
<li><code>bug.report()</code> now tries to extract an email address from a <span class="samp">BugReports</span> field, and if there is none, from a <span class="samp">Contacts</span> field.</li>
<li>The <code>format()</code> and <code>print()</code> methods for <code>object.size()</code> results get new options <code>standard</code> and <code>digits</code>; notably, <code>standard = "IEC"</code> and <code>standard = "SI"</code> allow more standard (but less common) abbreviations than the default ones, e.g. for kilobytes. (From contributions by Henrik Bengtsson.)</li>
<li>If a reference class has a validity method, <code>validObject</code> will be called automatically from the default initialization method for reference classes.</li>
<li><code>tapply()</code> gets new option <code>default = NA</code> allowing to change the previously hardcoded value.</li>
<li><code>read.dcf()</code> now consistently interprets any ‘whitespace’ to be stripped to include newlines.</li>
<li>The maximum number of DLLs that can be loaded into R e.g. <em>via</em> <code>dyn.load()</code> can now be increased by setting the environment variable <code>R_MAX_NUM_DLLS</code> before starting R.</li>
<li>Assigning to an element of a vector beyond the current length now over-allocates by a small fraction. The new vector is marked internally as growable, and the true length of the new vector is stored in the <code>truelength</code> field. This makes building up a vector result by assigning to the next element beyond the current length more efficient, though pre-allocating is still preferred. The implementation is subject to change and not intended to be used in packages at this time.</li>
<li>Loading the <span class="pkg">parallel</span> package namespace no longer sets or changes the <code>.Random.seed</code>, even if <span class="env">R_PARALLEL_PORT</span> is unset.NB: This can break reproducibility of output, and did for a <acronym><span class="acronym">CRAN</span></acronym> package.</li>
<li>Methods <code>"wget"</code> and <code>"curl"</code> for <code>download.file()</code> now give an <b>R</b> error rather than a non-zero return value when the external command has a non-zero status.</li>
<li>Encoding name <code>"utf8"</code> is mapped to <code>"UTF-8"</code>. Many implementations of <code>iconv</code> accept <code>"utf8"</code>, but not GNU <span class="pkg">libiconv</span> (including the late 2016 version 1.15).</li>
<li><code>sessionInfo()</code> shows the full paths to the library or executable files providing the BLAS/LAPACK implementations currently in use (not available on Windows).</li>
<li>The binning algorithm used by bandwidth selectors <code>bw.ucv()</code>, <code>bw.bcv()</code> and <code>bw.SJ()</code> switches to a version linear in the input size <code>n</code> for <code>n #> nb/2</code>. (The calculations are the same, but for larger <code>n/nb</code> it is worth doing the binning in advance.)</li>
<li>There is a new option <code>PCRE_study</code> which controls when <code>grep(perl = TRUE)</code> and friends ‘study’ the compiled pattern. Previously this was done for 11 or more input strings: it now defaults to 10 or more (but most examples need many more for the difference from studying to be noticeable).</li>
<li><code>grep(perl = TRUE)</code> and friends can now make use of PCRE&#8217;s Just-In-Time mechanism, for PCRE <i>#>=</i> 8.20 on platforms where JIT is supported. It is used by default whenever the <code>pattern</code> is studied (see the previous item). (Based on a patch from Mikko Korpela.)This is controlled by a new option <code>PCRE_use_JIT</code>.Note that in general this makes little difference to the speed, and may take a little longer: its benefits are most evident on strings of thousands of characters. As a side effect it reduces the chances of C stack overflow in the PCRE library on very long strings (millions of characters, but see next item).
<p>Warning: segfaults were seen using PCRE with JIT enabled on 64-bit Sparc builds.</li>
<li>There is a new option <code>PCRE_limit_recursion</code> for <code>grep(perl = TRUE)</code> and friends to set a recursion limit taking into account <b>R</b>&#8216;s estimate of the remaining C stack space (or 10000 if that is not available). This reduces the chance of C stack overflow, but because it is conservative may report a non-match (with a warning) in examples that matched before. By default it is enabled if any input string has 1000 or more bytes. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16757">PR#16757</a>)</li>
<li><code>getGraphicsEvent()</code> now works on <code>X11(type = "cairo")</code> devices. Thanks to Frederick Eaton (for reviving an earlier patch).</li>
<li>There is a new argument <code>onIdle</code> for <code>getGraphicsEvent()</code>, which allows an R function to be run whenever there are no pending graphics events. This is currently only supported on X11 devices. Thanks to Frederick Eaton.</li>
<li>The <code>deriv()</code> and similar functions now can compute derivatives of <code>log1p()</code>, <code>sinpi()</code> and similar one-argument functions, thanks to a contribution by Jerry Lewis.</li>
<li><code>median()</code> gains a formal <code>...</code> argument, so methods with extra arguments can be provided.</li>
<li><code>strwrap()</code> reduces <code>indent</code> if it is more than half <code>width</code> rather than giving an error. (Suggested by Bill Dunlap.)</li>
<li>When the condition <code>code</code> in <code>if(.)</code> or <code>while(.)</code> is not of length one, an error instead of a warning may be triggered by setting an environment variable, see the help page.</li>
<li>Formatting and printing of bibliography entries (<code>bibentry</code>) is more flexible and better documented. Apart from setting <code>options(citation.bibtex.max = 99)</code> you can also use <code>print(&lt;citation#>, bibtex=TRUE)</code> (or <code>format(..)</code>) to get the BibTeX entries in the case of more than one entry. This also affects <code>citation()</code>. Contributions to enable <code>style = "html+bibtex"</code> are welcome.</li>
</ul>
<h4>C-LEVEL FACILITIES</h4>
<ul>
<li>Entry points <code>R_MakeExternalPtrFn</code> and <code>R_ExternalPtrFn</code> are now declared in header ‘<span class="file">Rinternals.h</span>’ to facilitate creating and retrieving an <b>R</b>external pointer from a C function pointer without ISO C warnings about the conversion of function pointers.</li>
<li>There was an exception for the native Solaris C++ compiler to the dropping (in <b>R</b> 3.3.0) of legacy C++ headers from headers such as ‘<span class="file">R.h</span>’ and ‘<span class="file">Rmath.h</span>’ — this has now been removed. That compiler has strict C++98 compliance hence does not include extensions in its (non-legacy) C++ headers: some packages will need to request C++11 or replace non-C++98 calls such as <code>lgamma</code>: see §1.6.4 of ‘Writing R Extensions’.Because it is needed by about 70 CRAN packages, headers ‘<span class="file">R.h</span>’ and ‘<span class="file">Rmath.h</span>’ still declare
<pre>use namespace std;</pre>
<p>when included on Solaris.</li>
<li>When included from C++, the <b>R</b> headers now use forms such as <code>std::FILE</code> directly rather than including the line
<pre>using std::FILE;</pre>
<p>C++ code including these headers might be relying on the latter.</li>
<li>Headers ‘<span class="file">R_ext/BLAS.h</span>’ and ‘<span class="file">R_ext/Lapack.h</span>’ have many improved declarations including <code>const</code> for double-precision complex routines. <em>Inter alia</em> this avoids warnings when passing ‘string literal’ arguments from C++11 code.</li>
<li>Headers for Unix-only facilities ‘<span class="file">R_ext/GetX11Image.h</span>’, ‘<span class="file">R_ext/QuartzDevice.h</span>’ and ‘<span class="file">R_ext/eventloop.h</span>’ are no longer installed on Windows.</li>
<li>No-longer-installed headers ‘<span class="file">GraphicsBase.h</span>’, ‘<span class="file">RGraphics.h</span>’, ‘<span class="file">Rmodules/RX11.h</span>’ and ‘<span class="file">Rmodules/Rlapack.h</span>’ which had a LGPL license no longer do so.</li>
<li><code>HAVE_UINTPTR_T</code> is now defined where appropriate by <code>Rconfig.h</code> so that it can be included before <code>Rinterface.h</code> when <code>CSTACK_DEFNS</code> is defined and a C compiler (not C++) is in use. <code>Rinterface.h</code> now includes C header ‘<span class="file">stdint.h</span>’ or C++11 header ‘<span class="file">cstdint</span>’ where needed.</li>
<li>Package <span class="pkg">tools</span> has a new function <code>package_native_routine_registration_skeleton()</code> to assist adding native-symbol registration to a package. See its help and §5.4.1 of ‘Writing R Extensions’ for how to use it. (At the time it was added it successfully automated adding registration to over 90% of <acronym><span class="acronym">CRAN</span></acronym> packages which lacked it. Many of the failures were newly-detected bugs in the packages, e.g. 50 packages called entry points with varying numbers of arguments and 65 packages called entry points not in the package.)</li>
</ul>
<h4>INSTALLATION on a UNIX-ALIKE</h4>
<ul>
<li><code>readline</code> headers (and not just the library) are required unless configuring with <span class="option">&#8211;with-readline=no</span>.</li>
<li><code>configure</code> now adds a compiler switch for C++11 code, even if the compiler supports C++11 by default. (This ensures that <code>g++</code> 6.x uses C++11 mode and not its default mode of C++14 with ‘GNU extensions’.)The tests for C++11 compliance are now much more comprehensive. For gcc &lt; 4.8, the tests from R 3.3.0 are used in order to maintain the same behaviour on Linux distributions with long-term support.</li>
<li>An alternative compiler for C++11 is now specified with <span class="samp">CXX11</span>, not <span class="samp">CXX1X</span>. Likewise C++11 flags are specified with <span class="samp">CXX11FLAGS</span> and the standard (e.g., <span class="samp">-std=gnu++11</span> is specified with <span class="samp">CXX11STD</span>.</li>
<li><code>configure</code> now tests for a C++14-compliant compiler by testing some basic features. This by default tries flags for the compiler specified by <span class="samp">CXX11</span>, but an alternative compiler, options and standard can be specified by variables <span class="samp">CXX14</span>, <span class="samp">CXX14FLAGS</span> and <span class="samp">CXX14STD</span> (e.g., <span class="option">-std=gnu++14</span>).</li>
<li>There is a new macro <code>CXXSTD</code> to help specify the standard for C++ code, e.g. <span class="option">-std=c++98</span>. This makes it easier to work with compilers which default to a later standard: for example, with <code>CXX=g++6 CXXSTD=-std=c++98</code> <code>configure</code> will select commands for <code>g++</code> 6.x which conform to C++11 and C++14 where specified but otherwise use C++98.</li>
<li>Support for the defunct IRIX and OSF/1 OSes and Alpha CPU has been removed.</li>
<li><code>configure</code> checks that the compiler specified by <span class="samp">$CXX $CXXFLAGS</span> is able to compile C++ code.</li>
<li><code>configure</code> checks for the required header ‘<span class="file">sys/select.h</span>’ (or ‘<span class="file">sys/time.h</span>’ on legacy systems) and system call <code>select</code> and aborts if they are not found.</li>
<li>If available, the POSIX 2008 system call <code>utimensat</code> will be used by <code>Sys.setFileTime()</code> and <code>file.copy(copy.date = TRUE)</code>. This may result in slightly more accurate file times. (It is available on Linux and FreeBSD but not macOS.)</li>
<li>The minimum version requirement for <code>libcurl</code> has been reduced to 7.22.0, although at least 7.28.0 is preferred and earlier versions are little tested. (This is to support Debian 7 ‘Wheezy’ LTS and Ubuntu ‘Precise’ 12.04 LTS, although the latter is close to end-of-life.)</li>
<li><code>configure</code> tests for a C++17-compliant compiler. The tests are experimental and subject to change in the future.</li>
</ul>
<h4>INCLUDED SOFTWARE</h4>
<ul>
<li>(Windows only) Tcl/Tk version 8.6.4 is now included in the binary builds. The ‘<span class="file">tcltk*.chm</span>’ help file is no longer included; please consult the online help at <a href="http://www.tcl.tk/man/">http://www.tcl.tk/man/</a> instead.</li>
<li>The version of LAPACK included in the sources has been updated to 3.7.0: no new routines have been added to <b>R</b>.</li>
</ul>
<h4>PACKAGE INSTALLATION</h4>
<ul>
<li>There is support for compiling C++14 or C++17 code in packages on suitable platforms: see ‘Writing R Extensions’ for how to request this.</li>
<li>The order of flags when <span class="samp">LinkingTo</span> other packages has been changed so their include directories come earlier, before those specified in <code>CPPFLAGS</code>. This will only have an effect if non-system include directories are included with <span class="option">-I</span> flags in <code>CPPFLAGS</code> (and so not the default <code>-I/usr/local/include</code> which is treated as a system include directory on most platforms).</li>
<li>Packages which register native routines for <code>.C</code> or <code>.Fortran</code> need to be re-installed for this version (unless installed with R-devel SVN revision r72375 or later).</li>
<li>Make variables with names containing <code>CXX1X</code> are deprecated in favour of those using <code>CXX11</code>, but for the time being are still made available <em>via</em>file ‘<span class="file">etc/Makeconf</span>’. Packages using them should be converted to the new forms and made dependent on <span class="samp">R (#>= 3.4.0)</span>.</li>
</ul>
<h4>UTILITIES</h4>
<ul>
<li>Running <code>R CMD check --as-cran</code> with <span class="env">_R_CHECK_CRAN_INCOMING_REMOTE_</span> false now skips tests that require remote access. The remaining (local) tests typically run quickly compared to the remote tests.</li>
<li><code>R CMD build</code> will now give priority to vignettes produced from files in the ‘<span class="file">vignettes</span>’ directory over those in the ‘<span class="file">inst/doc</span>’ directory, with a warning that the latter are being ignored.</li>
<li><code>R CMD config</code> gains a <span class="option">&#8211;all</span> option for printing names and values of all basic configure variables.It now knows about all the variables used for the C++98, C++11 and C++14 standards.</li>
<li><code>R CMD check</code> now checks that output files in ‘<span class="file">inst/doc</span>’ are newer than the source files in ‘<span class="file">vignettes</span>’.</li>
<li>For consistency with other package subdirectories, files named ‘<span class="file">*.r</span>’ in the ‘<span class="file">tests</span>’ directory are now recognized as tests by <code>R CMD check</code>. (Wish of <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17143">PR#17143</a>.)</li>
<li><code>R CMD build</code> and <code>R CMD check</code> now use the <em>union</em> of <span class="env">R_LIBS</span> and <code>.libPaths()</code>. They may not be equivalent, e.g., when the latter is determined by <span class="env">R_PROFILE</span>.</li>
<li><code>R CMD build</code> now preserves dates when it copies files in preparing the tarball. (Previously on Windows it changed the dates on all files; on Unix, it changed some dates when installing vignettes.)</li>
<li>The new option <code>R CMD check --no-stop-on-test-error</code> allows running the remaining tests (under ‘<span class="file">tests/</span>’) even if one gave an error.</li>
<li>Check customization <em>via</em> environment variables to detect side effects of <code>.Call()</code> and <code>.External()</code> calls which alter their arguments is described in §8 of the ‘R Internals’ manual.</li>
<li><code>R CMD check</code> now checks any <span class="samp">BugReports</span> field to be non-empty and a suitable single URL.</li>
<li><code>R CMD check --as-cran</code> now NOTEs if the package does not register its native routines or does not declare its intentions on (native) symbol search. (This will become a WARNING in due course.)</li>
</ul>
<h4>DEPRECATED AND DEFUNCT</h4>
<ul>
<li>(Windows only) Function <code>setInternet2()</code> is defunct.</li>
<li>Installation support for <code>readline</code> emulations based on <code>editline</code> (aka <code>libedit</code>) is deprecated.</li>
<li>Use of the C/C++ macro <span class="samp">NO_C_HEADERS</span> is defunct and silently ignored.</li>
<li><code>unix.time()</code>, a traditional synonym for <code>system.time()</code>, has been deprecated.</li>
<li><code>structure(NULL, ..)</code> is now deprecated as you cannot set attributes on <code>NULL</code>.</li>
<li>Header ‘<span class="file">Rconfig.h</span>’ no longer defines <span class="samp">SUPPORT_OPENMP</span>; instead use <span class="samp">_OPENMP</span> (as documented for a long time).</li>
<li>(C-level Native routine registration.) The deprecated <code>styles</code> member of the <code>R_CMethodDef</code> and <code>R_FortranMethodDef</code> structures has been removed. Packages using these will need to be re-installed for <b>R</b> 3.4.0.</li>
<li>The deprecated support for PCRE versions older than 8.20 will be removed in <b>R</b> 3.4.1. (Versions 8.20–8.31 will still be accepted but remain deprecated.)</li>
</ul>
<h4>BUG FIXES</h4>
<ul>
<li>Getting or setting <code>body()</code> or <code>formals()</code> on non-functions for now signals a warning and may become an error for setting.</li>
<li><code>match(x, t)</code>, <code>duplicated(x)</code> and <code>unique(x)</code> work as documented for complex numbers with <code>NA</code>s or <code>NaN</code>s, where all those containing <code>NA</code> do match, whereas in the case of <code>NaN</code>&#8216;s both real and imaginary parts must match, compatibly with how <code>print()</code> and <code>format()</code> work for complex numbers.</li>
<li><code>deparse(&lt;complex#>, options = "digits17")</code> prints more nicely now, mostly thanks to a suggestion by Richie Cotton.</li>
<li>Rotated symbols in plotmath expressions are now positioned correctly on <code>x11(type = "Xlib")</code>. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16948">PR#16948</a>)</li>
<li><code>as&lt;-()</code> avoids an infinite loop when a virtual class is interposed between a subclass and an actual superclass.</li>
<li>Fix level propagation in <code>unlist()</code> when the list contains zero-length lists or factors.</li>
<li>Fix S3 dispatch on S4 objects when the <span class="pkg">methods</span> package is not attached.</li>
<li>Internal S4 dispatch sets <code>.Generic</code> in the method frame for consistency with <code>standardGeneric()</code>. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16929">PR#16929</a>)</li>
<li>Fix <code>order(x, decreasing = TRUE)</code> when <code>x</code> is an integer vector containing <code>MAX_INT</code>. Ported from a fix Matt Dowle made to <a href="https://cran.r-project.org/package=data.table"><span class="pkg">data.table</span></a>.</li>
<li>Fix caching by <code>callNextMethod()</code>, resolves <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16973">PR#16973</a> and <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16974">PR#16974</a>.</li>
<li><code>grouping()</code> puts NAs last, to be consistent with the default behavior of <code>order()</code>.</li>
<li>Point mass limit cases: <code>qpois(-2, 0)</code> now gives <code>NaN</code> with a warning and <code>qgeom(1, 1)</code> is <code>0</code>. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16972">PR#16972</a>)</li>
<li><code>table()</code> no longer drops an <code>"NaN"</code> factor level, and better obeys <code>exclude = &lt;chr#></code>, thanks to Suharto Anggono&#8217;s patch for <a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16936">PR#16936</a>. Also, in the case of <code>exclude = NULL</code> and <code>NA</code>s, these are tabulated correctly (again).Further, <code>table(1:2, exclude = 1, useNA = "ifany")</code> no longer erroneously reports <code>&lt;NA#></code> counts.Additionally, all cases of empty <code>exclude</code> are equivalent, and <code>useNA</code> is not overwritten when specified (as it was by <code>exclude = NULL</code>).</li>
<li><code>wilcox.test(x, conf.int=TRUE)</code> no longer errors out in cases where the confidence interval is not available, such as for <code>x = 0:2</code>.</li>
<li><code>droplevels(f)</code> now keeps &lt;NA#> levels when present.</li>
<li>In integer arithmetic, <code>NULL</code> is now treated as <code>integer(0)</code> whereas it was previously treated as <code>double(0)</code>.</li>
<li>The radix sort considers <code>NA_real_</code> and <code>NaN</code> to be equivalent in rank (like the other sort algorithms).</li>
<li>When <code>index.return=TRUE</code> is passed to <code>sort.int()</code>, the radix sort treats <code>NA</code>s like <code>sort.list()</code> does (like the other sort algorithms).</li>
<li>When in <code>tabulate(bin, nbin)</code> <code>length(bin)</code> is larger than the maximal integer, the result is now of type <code>double</code> and hence no longer silently overflows to wrong values. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17140">PR#17140</a>)</li>
<li><code>as.character.factor()</code> respects S4 inheritance when checking the type of its argument. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17141">PR#17141</a>)</li>
<li>The <code>factor</code> method for <code>print()</code> no longer sets the class of the factor to <code>NULL</code>, which would violate a basic constraint of an S4 object.</li>
<li><code>formatC(x, flag = f)</code> allows two new flags, and signals an error for invalid flags also in the case of character formatting.</li>
<li>Reading from <code>file("stdin")</code> now also closes the connection and hence no longer leaks memory when reading from a full pipe, thanks to Gábor Csárdi, see thread starting at <a href="https://stat.ethz.ch/pipermail/r-devel/2016-November/073360.html">https://stat.ethz.ch/pipermail/r-devel/2016-November/073360.html</a>.</li>
<li>Failure to create file in <code>tempdir()</code> for compressed <code>pdf()</code> graphics device no longer errors (then later segfaults). There is now a warning instead of error and compression is turned off for the device. Thanks to Alec Wysoker (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17191">PR#17191</a>).</li>
<li>Asking for <code>methods()</code> on <code>"|"</code> returns only S3 methods. See <a href="https://stat.ethz.ch/pipermail/r-devel/2016-December/073476.html">https://stat.ethz.ch/pipermail/r-devel/2016-December/073476.html</a>.</li>
<li><code>dev.capture()</code> using Quartz Cocoa device (macOS) returned invalid components if the back-end chose to use ARGB instead of RGBA image format. (Reported by Noam Ross.)</li>
<li><code>seq("2", "5")</code> now works too, equivalently to <code>"2":"5"</code> and <code>seq.int()</code>.</li>
<li><code>seq.int(to = 1, by = 1)</code> is now correct, other cases are integer (instead of <code>double</code>) when <code>seq()</code> is integer too, and the &#8220;non-finite&#8221; error messages are consistent between <code>seq.default()</code> and <code>seq.int()</code>, no longer mentioning <code>NaN</code> etc.</li>
<li><code>rep(x, times)</code> and <code>rep.int(x, times)</code> now work when <code>times</code> is larger than the largest value representable in an integer vector. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16932">PR#16932</a>)</li>
<li><code>download.file(method = "libcurl")</code> does not check for URL existence before attempting downloads; this is more robust to servers that do not support HEAD or range-based retrieval, but may create empty or incomplete files for aborted download requests.</li>
<li>Bandwidth selectors <code>bw.ucv()</code>, <code>bw.bcv()</code> and <code>bw.SJ()</code> now avoid integer overflow for large sample sizes.</li>
<li><code>str()</code> no longer shows <code>"list output truncated"</code>, in cases that list was not shown at all. Thanks to Neal Fultz (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17219">PR#17219</a>)</li>
<li>Fix for <code>cairo_pdf()</code> (and <code>svg()</code> and <code>cairo_ps()</code>) when replaying a saved display list that contains a mix of <span class="pkg">grid</span> and <span class="pkg">graphics</span> output. (Report by Yihui Xie.)</li>
<li>The <code>str()</code> and <code>as.hclust()</code> methods for <code>"dendrogram"</code> now also work for deeply nested dendrograms thanks to non-recursive implementations by Bradley Broom.</li>
<li><code>sample()</code> now uses two uniforms for added precision when the uniform generator is <code>Knuth-TAOCP</code>, <code>Knuth-TAOCP-2002</code>, or a user-defined generator and the population size is <i>2^25</i> or greater.</li>
<li>If a vignette in the ‘<span class="file">vignettes</span>’ directory is listed in ‘<span class="file">.Rbuildignore</span>’, <code>R CMD build</code> would not include it in the tarball, but would include it in the vignette database, leading to a check warning. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17246">PR#17246</a>)</li>
<li><code>tools::latexToUtf8()</code> infinite looped on certain inputs. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17138">PR#17138</a>)</li>
<li><code>terms.formula()</code> ignored argument names when determining whether two terms were identical. (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17235">PR#17235</a>)</li>
<li><code>callNextMethod()</code> was broken when called from a method that augments the formal arguments of a primitive generic.</li>
<li>Coercion of an S4 object to a vector during sub-assignment into a vector failed to dispatch through the <code>as.vector()</code> generic (often leading to a segfault).</li>
<li>Fix problems in command completion: Crash (<a href="https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17222">PR#17222</a>) and junk display in Windows, handling special characters in filenames on all systems.</li>
</ul>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="61379" data-permalink="https://www.r-statistics.com/2016/03/r-3-2-4-is-released/logo/" data-orig-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" data-orig-size="100,76" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="logo" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" data-large-file="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?fit=100%2C76&amp;ssl=1" class="alignnone size-full wp-image-61379" src="https://i0.wp.com/www.r-statistics.com/wp-content/uploads/2016/03/logo.jpg?resize=100%2C76&#038;ssl=1" alt="logo" width="100" height="76" /></p>The post <a href="https://www.r-statistics.com/2017/04/r-3-4-0-is-released-with-new-speed-upgrades-and-bug-fixes/">R 3.4.0 is released – with new speed upgrades and bug-fixes</a> first appeared on <a href="https://www.r-statistics.com">R-statistics blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.r-statistics.com/2017/04/r-3-4-0-is-released-with-new-speed-upgrades-and-bug-fixes/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61479</post-id>	</item>
	</channel>
</rss>
