[R] glob2rx function not working

Peter Dalgaard p.dalgaard at biostat.ku.dk
Mon Feb 20 19:19:09 CET 2006


mtb954 at gmail.com writes:

> Dear R users,
> 
> Inspired by previous list discussion of the glob2rxc function, I am
> attempting to create a new vector called TOTAL by summing all vectors
> whose names begin with ABC:
> 
> TOTAL = sum(list = ls(pattern = glob2rx("ABC*")))
> 
> I'm running R 2.2.1 on Windows XP. Can anyone say what I'm missing?

Probably, but I'll save the sarcasm...

Consider this:

> ls()
[1] "as.alist.call" "f"             "fire"
[4] "Hgb"           "perulung"      "walk2"
[7] "x"             "y"             "zelazo"
> ls(pattern=glob2rx("f*"))
[1] "f"    "fire"
> sum(list=ls(pattern=glob2rx("f*")))
Error in sum(..., na.rm = na.rm) : invalid 'mode' of argument

which is because

> sum(c("f","fire"))
Error in sum(..., na.rm = na.rm) : invalid 'mode' of argument

and has nothing to do with glob2rx, which is working fine.

You may be looking for constructions like

 do.call("sum",lapply(ls(pattern=glob2rx("ABC*")), get)))

or

 sum(unlist(lapply(ls(pattern=glob2rx("ABC*")), get)))


-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907




More information about the R-help mailing list