I am more used to getting an error if you try to take the log of 0, like this (in Perl):
perl -le 'for my $num (1, 0, -1, -2) { print log $num; }' 0 Can't take log of 0 at -e line 1. R is different. With R, you do not even get a *warning* about log(0). Only log() of negative number produces a warning: echo "for (num in c(1, 0, -1, -2)) { print(log(num)); }" > ~/tmp/test1.R R --no-save < ~/tmp/test1.R ... > for (num in c(1, 0, -1, -2)) { print(log(num)); } [1] 0 [1] -Inf [1] NaN [1] NaN Warning messages: 1: In log(num) : NaNs produced 2: In log(num) : NaNs produced > I agree with you that Spearman's correlation's invariance to monotone transformations is an advantage. It is R's happy attitude to -Inf and Inf that puzzled me at first. Anyhow, verifying and/or preprocessing the input to cor() is the answer to my questions. Thank you again for the help! Timur On Fri, Sep 12, 2008 at 11:11 AM, Greg Snow <[EMAIL PROTECTED]> wrote: > Just out of curiosity, why do you want the spearman rank correlation to > error in this case? > > One of the advantages of the spearman correlation is that it is invariant > to monotone transformations, so most people that use it see the fact that > corr(x,y, method='spearman') gives the same answer as cor(log(x), exp(y), > method='spearman') to be the desired result. > > -- > Gregory (Greg) L. Snow Ph.D. > Statistical Data Center > Intermountain Healthcare > [EMAIL PROTECTED] > (801) 408-8111 > > > > > -----Original Message----- > > From: Timur Shtatland [mailto:[EMAIL PROTECTED] > > Sent: Thursday, September 11, 2008 6:03 PM > > To: Greg Snow > > Cc: r-help@r-project.org > > Subject: Re: [R] making spearman correlation cor() call fail > > with log(0) as input > > > > You are right, Inf and -Inf are not considered errors in R, > > they are accepted as input to Spearman's cor(), and so I will > > have to check the input myself for such condition. > > Thank you for pointing this out! > > > > Timur > > > > On Wed, Sep 10, 2008 at 8:50 PM, Greg Snow > > <[EMAIL PROTECTED]> wrote: > > > Your code shows no errors only correct responses. > > > > > > If you want an error when R is generating correct results, > > you will need to check for the conditions yourself. > > > > > > -----Original Message----- > > > From: "Timur Shtatland" <[EMAIL PROTECTED]> > > > To: "r-help@r-project.org" <r-help@r-project.org> > > > Sent: 9/10/08 3:51 PM > > > Subject: [R] making spearman correlation cor() call fail > > with log(0) > > > as input > > > > > > > > > Hi, > > > > > > How can I make the cor(x, y, method="spearman") call to produce an > > > error when the input to it (x, y) produces an error? Here > > is a simple > > > example: > > > > > >> a <- c(0, 1, 2) > > >> b <- c(100, 2, 4) > > > > > > ## error: > > >> log(a) > > > [1] -Inf 0.0000000 0.6931472 > > > > > > ## error, as expected: > > >> cor(log(a), log(b), method="pearson") > > > [1] NaN > > > > > > ## not an error any more (not expected): > > >> cor(log(a), log(b), method="spearman") > > > [1] -0.5 > > >> cor(log(a), log(b), method="spearman", use="all.obs") > > > [1] -0.5 > > > > > >> sessionInfo() > > > R version 2.6.1 (2007-11-26) > > > i686-pc-linux-gnu > > > > > > locale: > > > > > LC_CTYPE=en_US;LC_NUMERIC=C;LC_TIME=en_US;LC_COLLATE=en_US;LC_MONETARY > > > > > =en_US;LC_MESSAGES=en_US;LC_PAPER=en_US;LC_NAME=C;LC_ADDRESS=C;LC_TELE > > > PHONE=C;LC_MEASUREMENT=en_US;LC_IDENTIFICATION=C > > > > > > attached base packages: > > > [1] stats graphics grDevices utils datasets methods base > > >> > > > > > > Thank you for your help. > > > > > > Best regards, > > > > > > Timur Shtatland > > > > > > ______________________________________________ > > > R-help@r-project.org mailing list > > > https://stat.ethz.ch/mailman/listinfo/r-help > > > PLEASE do read the posting guide > > > http://www.R-project.org/posting-guide.html > > > and provide commented, minimal, self-contained, reproducible code. > > > > > > > > > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.