Jeroen,

The problem seems to be that you are grabbing a symbol that doesn't have a
name. I suspect its R_UnboundValue, but I don't have time to check right
now. Anyway, take a look at this:

> .Internal(inspect(as.list(lm)$data))
@1cada98 01 SYMSXP g1c0 [MARK,NAM(2)] "" (has value)

And compare it with this:
> x = as.symbol("y")
> x
y
> .Internal(inspect(x))
@2204db8 01 SYMSXP g1c0 [MARK,NAM(1)] "y"

So you have attemtped to assign a symbol pointing to the variable "" to
foo. My guess is that there is a specific way arguments are assigned values
within a closure that allows this to happen when a function is being
called, which allows for "missing" argument values, but those special
mechanisms/protections aren't available outside of that situation using
standard assignment mechanics and so R is getting confused.

AFAICT the assignment to foo should probably just be failing outright.

~G


On Mon, Oct 21, 2013 at 12:31 PM, Jeroen Ooms <jeroen.o...@stat.ucla.edu>wrote:

> When a variable is assigned the empty symbol, looking up the variable
> results in an error message that looks like a function call:
>
> > foo <- as.list(lm)$data
> > ls()
> [1] "foo"
> > foo
> Error: argument "foo" is missing, with no default
> > get("foo")
> Error in get("foo") : argument "foo" is missing, with no default
> > rm("foo")
>
> I ran into this problem when writing a function to serialize functions by
> their list representation, e.g. as.list(lm). It is quite hard to debug
> because of the confusing error message. I would have expected that:
>
>   foo == substitute()
>
> just like
>
>   as.list(lm)$data == substitute()
>
> Is this intended behaviour?
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



-- 
Gabriel Becker
Graduate Student
Statistics Department
University of California, Davis

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to