> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Behalf Of Douglas Bates
> Sent: Wednesday, April 07, 2004 5:13 PM
> To: Warnes, Gregory R
> Cc: Shin; [EMAIL PROTECTED]; 'Duncan Murdoch'
> Subject: Re: [Rd] Re: [R] More user-friendly error message needed.
> 
> 
> "Warnes, Gregory R" <[EMAIL PROTECTED]> writes:
> 
> > Perhaps one could create a utility function 
> > 
> >     has.element <- function(list, name) name %in% names(list)
> > 
> > and then have $ generate a warning (not an error!) when the 
> named element
> > does not exist.
> 
> Because of partial matching, list$name can return a result when 
> your has.element function returns FALSE.

Ash, well simple enough to fix:

        has.element <- function(list,name) !is.na(pmatch(name,names(list))

> 
> > lst = list(foo = 1:3, bar = LETTERS[1:3])
> > lst$f
> [1] 1 2 3
> > has.element <- function(list, name) name %in% names(list)
> > has.element(lst, "f")
> [1] FALSE
> 
> Before we go too far in speculating about what the $ operator should
> or should not return when the name is not matched, let's all remember
> that the semantics of the $ operator explicitly state that it should
> return NULL and, as Duncan wrote, there are many, many places in the
> base code for R that depend upon this behavior.  Trust me - you really
> don't want to change this.

While I do think that it is necessary to preseve the present semantics, it
would still be helpful to (at least optionally) have a warning issued when
NULL is returned because there is no matching name.   This really would help
in debugging code.

-Greg


> 
> ______________________________________________
> [EMAIL PROTECTED] mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-devel
> 


LEGAL NOTICE\ Unless expressly stated otherwise, this messag...{{dropped}}

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-devel

Reply via email to