[R] strange behavior of cor() with pairwise.complete.obs

Hilmar Berger hilmar.berger at imise.uni-leipzig.de
Wed Jan 2 18:39:07 CET 2008


Hi all, 

I'm not quite sure if this is a feature or a bug or if I just fail to understand
the documentation: 

If I use cor() with pairwise.complete.obs and method=pearson, the result is a
scalar: 

->cor(c(1,2,3),c(3,4,6),use="pairwise.complete.obs",method="pearson")
[1] 0.9819805

The documentation says that 
" '"pairwise.complete.obs"' only works with the '"pearson"' method
     for 'cov' and 'var'."

Thus, I guess that cor() should work for pairwise.complete.obs and method =
"kendall", or am I misinterpreting that statement ?

-> c(1,2,3),c(3,4,6),use="pairwise.complete.obs",method="kendall")
     [,1]
[1,]    1

Now the result is a matrix with dimensions (1,1) - strange enough.

Note that when I use "all.obs" or "complete.obs" I get a scalar for method
kendall, too.

It gets worse if one tries to calculate the correlation between the columns of
two matrices (i.e. cor(x,y) with x and y being a matrix). Then

-> c=matrix(c(1,2,3,3,4,5),nrow=3,ncol=2)
-> d=matrix(c(2,3,4,NA,NA,NA),nrow=3,ncol=2)
-> cor(c,d,use="pairwise.complete.obs",method="pearson")
     [,1] [,2]
[1,]    1   NA
[2,]    1   NA

-> cor(c,d,use="pairwise.complete.obs",method="kendall")
Error: 'x' is empty (*translated from german error message*)

The behavior is reproducible in R 2.4.1 and 2.6.1 (WinXP). I noticed that in
2.7.0 something was fixed in cor() related to "complete.obs" handling - would
that fix my problems ?

Any suggestions ?

Thanks, 
Hilmar




More information about the R-help mailing list