Here is an example problem:

> mycall <- expression(lm(Y ~ x))[[1]]
> mycall
lm(Y ~ x)
> newname <- "stats::lm"

> desiredResult
stats::lm(Y ~ x)

I've solved the problem in the kludgy way of
deparsing, fixing the string and then parsing.

I like Duncan's third method, but it seems like
it assumes the solution.  Moving functions around
is unappetizing for my use -- this is for testing
and keeping things as faithful to real use is a
good thing.

Pat


On 23/04/2013 21:18, Duncan Murdoch wrote:
On 13-04-23 3:51 PM, Patrick Burns wrote:
Okay, that's a good reason why it shouldn't.

Why it should is that I want to substitute
the first element of a call to be a function
including the namespace.

Three ways:

1.  Assign the function from the namespace locally, then call the local
one.
2.  Import the function in your NAMESPACE (if you know the name in
advance).
3.  Construct an expression involving ::, and substitute that in.

For example:

substitute(foo(x), list(foo=quote(baz::bar)))

Duncan Murdoch


Pat


On 23/04/2013 18:32, peter dalgaard wrote:

On Apr 23, 2013, at 19:23 , Patrick Burns wrote:

'as.name' doesn't recognize a name with
its namespace extension as a name:

as.name("lm")
lm
as.name("stats::lm")
`stats::lm`
as.name("stats:::lm")
`stats:::lm`


Is there a reason why it shouldn't?

Any reason why it should? :: and ::: are operators. foo$bar is not
the same as `foo$bar` either.





--
Patrick Burns
pbu...@pburns.seanet.com
twitter: @burnsstat @portfolioprobe
http://www.portfolioprobe.com/blog
http://www.burns-stat.com
(home of:
 'Impatient R'
 'The R Inferno'
 'Tao Te Programming')

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

Reply via email to