2015-07-14 9 views
5

ausgeschlossen zu vereinfachen, habe ich einen Datensatz, der wie folgt lautet:NA-Werte nicht in `cor`

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 

Wenn ich versuche:

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

ich:

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

Ich habe auch versucht na.action = na.exclude, etc. Keine scheinen zu funktionieren. Es wäre wirklich hilfreich zu wissen, was das Problem ist und wie ich es beheben kann. Vielen Dank.

Antwort

19

Lesen ?cor:

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

Es ist nicht na.rm hat, hat es use.

eine optionale Zeichenfolge, die eine Methode zur Berechnung von Kovarianzen bei fehlenden Werten liefert. Dies muss (eine Abkürzung für) eine der Zeichenketten "everything", "all.obs", "complete.obs", "na.or.complete" oder "pairwise.complete.obs" sein.

Wählen Sie eine. Details von dem, was jeder tut, ist in dem Details Abschnitt von ?cor.

+0

Ein sehr ärgerlichen Teil verwenden, um über 'R' die Inkonsistenz w.r.t. 'na.rm' und seine Varianten ... – MichaelChirico

+3

mindestens' help (foo) 'ist konsistent. – Spacedman

+0

Ja. Trotzdem hoffe ich, dass sie (jedenfalls "Base"/Out of the Box) zumindest irgendwann einmal vereinheitlichen ... – MichaelChirico

1

Nur um sicherzustellen, dass die Antwort auf diese Frage klar ist.

NA zu ignorieren, ist

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