[Rd] Pb with package::foo(x) <- value

Prof Brian Ripley ripley at stats.ox.ac.uk
Sat Apr 19 07:51:18 CEST 2008


On Fri, 18 Apr 2008, Herve Pages wrote:

> Hi,
>
> The parser doesn't seem to like this:
>
>   somePackage::foo(x) <- value
>   somePackage:::foo(x) <- value
>
> where foo() is a replacement function or method defined in package 
> somePackage.

But the error message you show is not from the parser, and

> parse(text="somePackage:::foo(x) <- value")
expression(somePackage:::foo(x) <- value)
attr(,"srcfile")
<text>

does work. The error you show arises is in the evaluator.

That's because that is not legal code.  :: and ::: are operators, not part 
of the language per se (although I have proposed changing that).  The 
message comes at a check for a name, and base::length is not a name.

It often helps to look error messages up in the sources.


> For example:
>
>   > x <- integer(4)
>   > base::length(x) <- 7
>   Error in base::length(x) <- 7 : invalid function in complex assignment
>
> I've tried to put some back quotes on the left side of the assignment in
> different ways but was not successful. So finally I had to use the
> non-replacement form:
>
>   > x <- base::`length<-`(x, 7)
>   > x
>   [1]  0  0  0  0 NA NA NA
>
> Is there a way to avoid this?
>
> Thanks!
> H.
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-devel mailing list