[R] when setting environment: target of assignment expands to non-language object

Gabor Grothendieck ggrothendieck at gmail.com
Tue Apr 27 22:59:34 CEST 2010


You did change it. Try nlme:::corExp

Also note that asNamespace("nlme") is a nicer way to refer to it.

On Tue, Apr 27, 2010 at 4:32 PM, Michael Steven Rooney
<michael.s.rooney at gmail.com> wrote:
> Sorry, I am still not understanding this. I tried using the unlock binding
> function, but the function remains unchanged after I attempt an assignment:
>
>> library(nlme)
>> bindingIsLocked("corExp",environment(corExp))
> [1] TRUE
>> unlockBinding("corExp",environment(corExp))
>> bindingIsLocked("corExp",environment(corExp))
> [1] FALSE
>> assignInNamespace("corExp",
> + function (value = numeric(0), form = ~1, nugget = FALSE, metric =
> c("euclidean",
> +     "maximum", "manhattan"), fixed = FALSE)
> + {
> +     cat("corExp\n")  ## SLIGHTLY CHANGE FUNCTION BY ADDING THIS LINE
> +     attr(value, "formula") <- form
> +     attr(value, "nugget") <- nugget
> +     attr(value, "metric") <- match.arg(metric)
> +     attr(value, "fixed") <- fixed
> +     class(value) <- c("corExp", "corSpatial", "corStruct")
> +     value
> + },
> + environment(corExp))
>> corExp
> function (value = numeric(0), form = ~1, nugget = FALSE, metric =
> c("euclidean",
>     "maximum", "manhattan"), fixed = FALSE)
> {
>     attr(value, "formula") <- form
>     attr(value, "nugget") <- nugget
>     attr(value, "metric") <- match.arg(metric)
>     attr(value, "fixed") <- fixed
>     class(value) <- c("corExp", "corSpatial", "corStruct")
>     value
> }
> <environment: namespace:nlme>
>
> On Mon, Apr 26, 2010 at 11:25 PM, Gabor Grothendieck
> <ggrothendieck at gmail.com> wrote:
>>
>> See ?lockBinding
>>
>> On Mon, Apr 26, 2010 at 11:20 PM, Michael Steven Rooney
>> <michael.s.rooney at gmail.com> wrote:
>> > I tried editing the corExp function (added a line) within the nlme
>> > environment with the following code, but it looks like my declaration
>> > did
>> > not have any effect. I am guessing it is locked some how. Is there an
>> > easy
>> > way to do this or am I treading into complicated waters? (I just picked
>> > up R
>> > a year ago, and I don't have any experience in development. Willing to
>> > learn.)
>> >
>> >> assignInNamespace("corExp",
>> > + function (value = numeric(0), form = ~1, nugget = FALSE, metric =
>> > c("euclidean",
>> > +     "maximum", "manhattan"), fixed = FALSE)
>> > + {
>> > +     cat("corExp\n")   # I ADDED THIS LINE HERE
>> > +     attr(value, "formula") <- form
>> > +     attr(value, "nugget") <- nugget
>> > +     attr(value, "metric") <- match.arg(metric)
>> > +     attr(value, "fixed") <- fixed
>> > +     class(value) <- c("corExp", "corSpatial", "corStruct")
>> > +     value
>> > + },
>> > + environment(corExp))
>> >> corExp
>> > function (value = numeric(0), form = ~1, nugget = FALSE, metric =
>> > c("euclidean",
>> >     "maximum", "manhattan"), fixed = FALSE)
>> > {
>> >     attr(value, "formula") <- form
>> >     attr(value, "nugget") <- nugget
>> >     attr(value, "metric") <- match.arg(metric)
>> >     attr(value, "fixed") <- fixed
>> >     class(value) <- c("corExp", "corSpatial", "corStruct")
>> >     value
>> > }
>> > <environment: namespace:nlme>
>> >
>> >
>> > On Mon, Apr 26, 2010 at 10:46 PM, Michael Steven Rooney
>> > <michael.s.rooney at gmail.com> wrote:
>> >>
>> >> Thanks.
>> >>
>> >> How do I make my function visible to others? Will assignInNamespace do
>> >> that?
>> >>
>> >> On Mon, Apr 26, 2010 at 10:23 PM, Gabor Grothendieck
>> >> <ggrothendieck at gmail.com> wrote:
>> >>>
>> >>> See ?assignInNamespace
>> >>>
>> >>> On Mon, Apr 26, 2010 at 9:49 PM, Michael Steven Rooney
>> >>> <michael.s.rooney at gmail.com> wrote:
>> >>> > Hi,
>> >>> >
>> >>> > I am trying to place my own functions in the nlme environment:
>> >>> >
>> >>> > The following statement works:
>> >>> >
>> >>> > environment(coef.corSPT) <-
>> >>> > environment(getS3method("coef","corSpatial"))
>> >>> >
>> >>> > but this one returns an error:
>> >>> >
>> >>> > environment(get("coef<-.corSPT")) <-
>> >>> > environment(getS3method("coef<-","corSpatial"))
>> >>> > Error in environment(get("coef<-.corSPT")) <-
>> >>> > environment(getS3method("coef<-",  :
>> >>> >  target of assignment expands to non-language object
>> >>> >
>> >>> > What should I do?
>> >>> >
>> >>> > Thanks.
>> >>> >
>> >>> > Mike
>> >>> >
>> >>> >        [[alternative HTML version deleted]]
>> >>> >
>> >>> > ______________________________________________
>> >>> > R-help at r-project.org mailing list
>> >>> > https://stat.ethz.ch/mailman/listinfo/r-help
>> >>> > PLEASE do read the posting guide
>> >>> > http://www.R-project.org/posting-guide.html
>> >>> > and provide commented, minimal, self-contained, reproducible code.
>> >>> >
>> >>
>> >
>> >
>
>



More information about the R-help mailing list