Which is an interesting detail in R that should be mentioned anyway, the difference between NA and NaN. Anyone used to languages which just NaN may confuse NA for that non-value.
https://www.r-bloggers.com/2012/08/difference-between-na-and...
https://cran.r-project.org/doc/manuals/r-release/R-lang.html... (lots of details how NA and NaN are handled)
Except - 1^NaN also is 1... now that IMO is wrong. But you can try the same in your browser's JS console and you will get 1 as a result too, so R is not the only one.
There are several NA values in R - NA_integer_, NA_real_, NA_complex_ and NA_character_, and the results will be different if you use some of them. NA_character_ and NA_complex_ will produce errors (different ones).
Also R's cleverness with NA's is not so consistent. For example:
median(c(1,1,1,NA))
Should return 1, since no matter what value is behind NA the median is still 1. But it returns NA."its value is substituted, unless env is .GlobalEnv in which case the symbol is left unchanged."
dim and dims :-)
R could do more here. I really like R.
I tried dims but: Error in dims(iris) : could not find function "dims"
I do find the occasional oddity. I've noticed more very useful messages/warnings (particularly in common tidyverse functions) recently, so I think they help.
To be fair, these quirks are generally very uncommon in day to day use.
https://rdatatable.gitlab.io/data.table/reference/substitute...
2*0 = 1 2*1 = 2 2*-1 = 1/2
When 1 raised to any power equals 1, does the power matter at all? Even if it's unknown, the answer is 1.
1^NA_complex_ # NA
But: 1^NA_real_ # 1