[Rd] obscure error with subsetting as.list() of a function then (PR#9506)

peter-m.schumacher at db.com peter-m.schumacher at db.com
Fri Feb 9 16:40:34 CET 2007


Ok, thanks for clearing it up. But:

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

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 cer=
tain
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 e=
rror with subsetting as.list() of a function then assigning that a (PR#=
9500)                                                                  =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                   
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                   
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                   
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                   
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                   
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                   
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                       =
                                                                   




peter-m.schumacher at db.com writes:

> 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.
>
>> f <- function(x) { NULL }
>> a <- as.list(f)[[1]]
>> a # ie print(a)
> Error: argument "a" is missing, with no default
>
> Note it says *argument* "a", which is strange. In fact, and unsurpris=
ingly, the bug lies
> with the object itself, not with print():
>
>> typeof(a)
> Error in typeof(a) : argument "a" is missing, with no default
>> deparse(a)
> Error in deparse(a) : argument "a" is missing, with no default
>
> However, this does work:
>> as.list(f)[[1]]
>
> It prints nothing, which is correct, and there is no error. So it see=
ms the bug lies with
> assigning a name to as.list(f)[[1]] as above, then trying to work wit=
h that new object.


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

> formals(f)
$x


> a <-formals(f)$x
> a
Error: argument "a" is missing, with no default

Technically, the missing argument object is a zero-length variable
name:

> mode(formals(f)$x)
[1] "name"
> as.character(formals(f)$x)
[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.



> Regards,
> Peter-M.Schumacher at db.com
>
>
> --please do not edit the information below--
>
> Version:
>  platform =3D i386-pc-mingw32
>  arch =3D i386
>  os =3D mingw32
>  system =3D i386, mingw32
>  status =3D
>  major =3D 2
>  minor =3D 4.1
>  year =3D 2006
>  month =3D 12
>  day =3D 18
>  svn rev =3D 40228
>  language =3D R
>  version.string =3D R version 2.4.1 (2006-12-18)
>
> Windows XP Professional (build 2600) Service Pack 2.0
>
> Locale:
> LC_COLLATE=3DEnglish_United Kingdom.1252;LC_CTYPE=3DEnglish_United Ki=
ngdom.1252;LC_MONETARY=3DEnglish_United Kingdom.1252;LC_NUMERIC=3DC;LC_=
TIME=3DEnglish_United Kingdom.1252
>
> Search Path:
>  .GlobalEnv, file:c:/schupl/R/myRLib/.RData, package:stats, package:g=
raphics, package:grDevices, package:utils, package:datasets, package:me=
thods, Autoloads, package:base
> ---
>
> This e-mail may contain confidential and/or privileged infor...{{drop=
ped}}
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

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



---

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



More information about the R-devel mailing list