NA值未被排除在"cor"之外

Cha*_*lie 15 r na

为了简化,我有一个数据集如下:

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
Run Code Online (Sandbox Code Playgroud)

当我尝试:

cor(b, jnk, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)

我明白了:

> cor(b, jnk, na.rm=T)
  Error in cor(b, jnk, na.rm = T) : unused argument (na.rm = T)
Run Code Online (Sandbox Code Playgroud)

我也试过na.action = na.exclude,等似乎没有用.知道问题是什么以及如何解决它真的很有帮助.谢谢.

Spa*_*man 38

TL; DR: 改为使用:

cor(b, jnk, use="complete.obs")
Run Code Online (Sandbox Code Playgroud)

阅读?cor:

cor(x, y = NULL, use = "everything",
     method = c("pearson", "kendall", "spearman"))
Run Code Online (Sandbox Code Playgroud)

它没有na.rm,它有use.

一个可选的字符串,给出了一种在存在缺失值的情况下计算协方差的方法.这必须是字符串中的一个(的缩写)"everything","all.obs","complete.obs","na.or.complete",或"pairwise.complete.obs".

选一个.什么做每一个细节的Details部分?cor.

  • 至少`help(foo)`是一致的. (5认同)
  • 关于R的一个非常烦人的部分是wrt na.rm及其变体的不一致... (2认同)

小智 6

只是为了确保这个问题的答案是明确的。

要忽略 NA,请使用

b <- 1:6
jnk <- c(2, 4, 5, NA, 7, 9)
cor(b, jnk, use="complete.obs")
[1] 0.9905977
Run Code Online (Sandbox Code Playgroud)