On 07/05/2011 7:09 PM, William Revelle wrote:
Dear friends,

How do I stop partial matching of list names?

e.g.,

x<- list(AAAA="aaaaa", BBBBB="bbbbb")
is.null(x$A)   #returns FALSE  even though there is no element A.

if(is.null(x$A))  {result<-  x$BBBB} else {result<- x$A}
result   #is aaaa even though there is no x$A element

x<- list(CCCC="aaaaa", BBBBB="bbbbb")
if(is.null(x$A))  {result<-  x$BBBB} else {result<- x$A}
result   #this is great

x<- list(ABC="aaaaa", BBBBB="bbbbb")
if(is.null(x$A))  {result<-  x$BBBB} else {result<- x$A}
result  #partial matches  and returns aaaa

x<- list(ABC="abc", BBBBB="bbbbb",AA="aaaa")
if(is.null(x$A))  {result<-  x$BBBB} else {result<- x$A}
result  #can not partial match, and thus returns bbbb

x<- list(AAB="aab", BBBBB="bbbbb",AA="aaaa")
if(is.null(x$A))  {result<-  x$BBBB} else {result<- x$A}
result #also can not partial match

My need for this is that I have several functions that return lists
and I am trying to extract AAAA if it exists, but something else if
it does not.

Both

"A" %in% names(x)

will return false, and

is.null(x[["A"]])

will return TRUE.

Duncan Murdoch

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

Reply via email to