Skip to content

obscure error with subsetting as.list() of a function then assigning that a (PR#9500)

4 messages · peter-m.schumacher at db.com, Gabor Grothendieck, Peter Dalgaard +1 more

#
Hello. I was writing some code that computes on the language and came across
this. I can work around it, but thought you might like to know about it.
Error: argument "a" is missing, with no default

Note it says *argument* "a", which is strange. In fact, and unsurprisingly, the bug lies
with the object itself, not with print():
Error in typeof(a) : argument "a" is missing, with no default
Error in deparse(a) : argument "a" is missing, with no default

However, this does work:
It prints nothing, which is correct, and there is no error. So it seems the bug lies with
assigning a name to as.list(f)[[1]] as above, then trying to work with that new object.

Regards,
Peter-M.Schumacher at db.com


--please do not edit the information below--

Version:
 platform = i386-pc-mingw32
 arch = i386
 os = mingw32
 system = i386, mingw32
 status =
 major = 2
 minor = 4.1
 year = 2006
 month = 12
 day = 18
 svn rev = 40228
 language = R
 version.string = R version 2.4.1 (2006-12-18)

Windows XP Professional (build 2600) Service Pack 2.0

Locale:
LC_COLLATE=English_United Kingdom.1252;LC_CTYPE=English_United Kingdom.1252;LC_MONETARY=English_United Kingdom.1252;LC_NUMERIC=C;LC_TIME=English_United Kingdom.1252

Search Path:
 .GlobalEnv, file:c:/schupl/R/myRLib/.RData, package:stats, package:graphics, package:grDevices, package:utils, package:datasets, package:methods, Autoloads, package:base
---

This e-mail may contain confidential and/or privileged infor...{{dropped}}
#
Also note:

   missing(a) # TRUE
On 2/8/07, peter-m.schumacher at db.com <peter-m.schumacher at db.com> wrote:
#
peter-m.schumacher at db.com writes:
It's not a bug things work in ways that confuse users when they pry
into things they were not expected to pry into.... Do you have a good
reason to call this a bug?

What you're seeing is R's "missing argument object", via the default
value of the formal argument x. A slightly cleaner way to get your
result is
$x
Error: argument "a" is missing, with no default

Technically, the missing argument object is a zero-length variable
name:
[1] "name"
[1] ""


Except for direct meddling with the formals(f), the only way to assign
the missing argument object is via parameter passing - any other
attempt to access it gives an error. So the common case is that the
object is indeed a function argument.

  
    
#
Ok, thanks for clearing it up. But:
Well if it's intended to work that way then it's not a bug.
As I said, I was computing on the language, in particular writing code that
processes the parse tree of a function. But I guess I need to avoid certain
gotchas like this one.

Regards,
Peter



                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
             Peter Dalgaard <p.dalgaard at biostat.ku.dk>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
             08/02/2007 23:39                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              To 
                                                                                                                                                                                                                                                                                                                                                                                                                        Peter-M Schumacher/DMGGM/DMG UK/DeuBa at DBEMEA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           cc 
                                                                                                                                                                                                                                                                                                                                                                                                                        r-devel at stat.math.ethz.ch, R-bugs at biostat.ku.dk                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Subject 
                                                                                                                                                                                                                                                                                                                                                                                                                        Re: [Rd] obscure error with subsetting as.list() of a function then assigning that a (PR#9500)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              




peter-m.schumacher at db.com writes:
It's not a bug things work in ways that confuse users when they pry
into things they were not expected to pry into.... Do you have a good
reason to call this a bug?

What you're seeing is R's "missing argument object", via the default
value of the formal argument x. A slightly cleaner way to get your
result is
$x
Error: argument "a" is missing, with no default

Technically, the missing argument object is a zero-length variable
name:
[1] "name"
[1] ""


Except for direct meddling with the formals(f), the only way to assign
the missing argument object is via parameter passing - any other
attempt to access it gives an error. So the common case is that the
object is indeed a function argument.
--
   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



---

This e-mail may contain confidential and/or privileged infor...{{dropped}}