-----Original Message----- From: r-devel-bounces@stat.math.ethz.ch [mailto:r-devel-bounces@stat.math.ethz.ch]On Behalf Of Douglas Bates Sent: Wednesday, April 07, 2004 5:13 PM To: Warnes, Gregory R Cc: Shin; r-devel@stat.math.ethz.ch; 'Duncan Murdoch' Subject: Re: [Rd] Re: [R] More user-friendly error message needed. "Warnes, Gregory R" <gregory_r_warnes@groton.pfizer.com> 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
______________________________________________ R-devel@stat.math.ethz.ch mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-devel
LEGAL NOTICE\ Unless expressly stated otherwise, this messag...{{dropped}}