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.
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.