thanks to Peter Daalgard, Brian Ripley, and Thomas Lumley for their quick, accurate and very helpful replies.


My understanding of NULL was incorrect, thanks for making this clear.
As for the question on match.arg I will use pmatch instead.

Best,

  Matthias



Thomas Lumley wrote:
On Wed, 9 Feb 2005, Matthias Burger wrote:


Hi all,

I'm a little surprised at

NULL == c("a", "b")

logical(0)

all(NULL == c("a", "b"))

[1] TRUE

Reading the documentation for all() this was not clear for me to be expected.


This is related to the question about sum(numeric(0)) that came up a few days ago.

It is conventional in logic that "for all x in X: P(x)" is true when X is empty. A reason why this is a useful convention is that it implies
all(c(x,y)) == all(x) && all(y) is still true when x or y happens to be empty. The converse holds for any(): any(logical(0)) is FALSE. This surprises fewer people.


A fairly complete list is

all(NULL) is TRUE
any(NULL) is FALSE
sum(NULL) is 0
prod(NULL) is 1
min(NULL) is Inf
max(NULL) is -Inf

with the last two giving a warning

Originally the question came up when using

match.arg(NULL, c("a", "b"))

[1] "a" where I had thought an error would occur.


I would have assumed "a" would be returned, thinking of match.arg as a way to handle default arguments, but I agree it isn't documented, and looking at the code it isn't clear what the author thought.

On the other hand, it *is* documented that `arg' must be a character string, and NULL isn't a character string. Perhaps you should just use pmatch() directly, as the main advantage of match.arg() is its ability to look up default arguments, which you don't seem to be using.


-thomas

-- Matthias Burger Project Manager/ Biostatistician Epigenomics AG Kleine Praesidentenstr. 1 10178 Berlin, Germany phone:+49-30-24345-371 fax:+49-30-24345-555 http://www.epigenomics.com [EMAIL PROTECTED]

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to