26

To simplify, I have a data set which is as follows:

b <- 1:6
# > b
# [1] 1 2 3 4 5 6
jnk <- c(2, 4, 5, NA, 7, 9)
# > jnk
# [1]  2  4  5 NA  7  9

When I try:

cor(b, jnk, na.rm=TRUE)

I get:

> cor(b, jnk, na.rm=T)
  Error in cor(b, jnk, na.rm = T) : unused argument (na.rm = T)

I've also tried na.action = na.exclude, etc. None seem to work. It'd be really helpful to know what the issue is and how I can fix it. Thanks.

MichaelChirico
  • 31,197
  • 13
  • 98
  • 169
Charlie
  • 387
  • 2
  • 4
  • 7

2 Answers2

60

TL; DR: Use instead:

cor(b, jnk, use="complete.obs")

Read ?cor:

cor(x, y = NULL, use = "everything",
     method = c("pearson", "kendall", "spearman"))

It doesn't have na.rm, it has use.

an optional character string giving a method for computing covariances in the presence of missing values. This must be (an abbreviation of) one of the strings "everything", "all.obs", "complete.obs", "na.or.complete", or "pairwise.complete.obs".

Pick one. Details of what each does is in the Details section of ?cor.

Michael Ohlrogge
  • 9,131
  • 3
  • 41
  • 69
Spacedman
  • 86,225
  • 12
  • 117
  • 197
6

Just to make sure the answer to this question is clear.

To ignore NA, use

b <- 1:6
jnk <- c(2, 4, 5, NA, 7, 9)
cor(b, jnk, use="complete.obs")
[1] 0.9905977
Steve Lihn
  • 185
  • 2
  • 3