(This article was first published on

**Odd Hypothesis**, and kindly contributed to R-bloggers)Here’s a weird R error/bug/nuance I came across today:

What would you expect the following lines of code to return?

`x = c('1', '2', '3')`

mean(x)

sd(x)

Well, apparently it is:

`# mean(x)`

[1] NA

# sd(x)

[1] 1

So, `sd()`

silently converts its input to numeric, while `mean()`

does not. More evidence of this is in the source:

`> mean`

function (x, ...)

UseMethod("mean")

<bytecode: 0x000000001165e790>

<environment: namespace:base>

> sd

function (x, na.rm = FALSE)

sqrt(var(if (is.vector(x)) x else as.double(x), na.rm = na.rm))

<bytecode: 0x000000001158eb00>

<environment: namespace:stats>

One hour of my work day was spent sorting this out. You’ve been warned.

Written with StackEdit.

To

**leave a comment**for the author, please follow the link and comment on their blog:**Odd Hypothesis**.R-bloggers.com offers

**daily e-mail updates**about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...