Here’s a weird R error/bug/nuance I came across today: What would you expect the following lines of code to return?
<span>x </span><span>=</span><span> c</span><span>(</span><span>'1'</span><span>,</span><span> </span><span>'2'</span><span>,</span><span> </span><span>'3'</span><span>)</span><span><br>mean</span><span>(</span><span>x</span><span>)</span><span><br>sd</span><span>(</span><span>x</span><span>)</span>
Well, apparently it is:
<span># mean(x)</span><span><br></span><span>[</span><span>1</span><span>]</span><span> NA<br><br></span><span># sd(x)</span><span><br></span><span>[</span><span>1</span><span>]</span><span> </span><span>1</span>
So, sd() silently converts its input to numeric, while mean() does not. More evidence of this is in the source:
<span>></span><span> mean<br></span><span>function</span><span> </span><span>(</span><span>x</span><span>,</span><span> </span><span>...)</span><span> <br></span><span>UseMethod</span><span>(</span><span>"mean"</span><span>)</span><span><br></span><span><</span><span>bytecode</span><span>:</span><span> </span><span>0x000000001165e790</span><span>></span><span><br></span><span><</span><span>environment</span><span>:</span><span> </span><span>namespace</span><span>:</span><span>base</span><span>></span><span><br><br></span><span>></span><span> sd<br></span><span>function</span><span> </span><span>(</span><span>x</span><span>,</span><span> na</span><span>.</span><span>rm </span><span>=</span><span> FALSE</span><span>)</span><span> <br>sqrt</span><span>(</span><span>var</span><span>(</span><span>if</span><span> </span><span>(</span><span>is</span><span>.</span><span>vector</span><span>(</span><span>x</span><span>))</span><span> x </span><span>else</span><span> </span><span>as</span><span>.</span><span>double</span><span>(</span><span>x</span><span>),</span><span> na</span><span>.</span><span>rm </span><span>=</span><span> na</span><span>.</span><span>rm</span><span>))</span><span><br></span><span><</span><span>bytecode</span><span>:</span><span> </span><span>0x000000001158eb00</span><span>></span><span><br></span><span><</span><span>environment</span><span>:</span><span> </span><span>namespace</span><span>:</span><span>stats</span><span>></span>
...
[Read more...]