[R] [External] Re: Building Packages. (fwd)
iuke-tier@ey m@iii@g oii uiow@@edu
iuke-tier@ey m@iii@g oii uiow@@edu
Thu Mar 21 12:44:00 CET 2024
[forgot to copy to R-help so re-sending]
---------- Forwarded message ----------
Date: Thu, 21 Mar 2024 11:41:52 +0000
From: luke-tierney using uiowa.edu
To: Duncan Murdoch <murdoch.duncan using gmail.com>
Subject: Re: [External] Re: [R] Building Packages.
At least on my installed version (which tells me it is out of date)
they appear to just be modifying the "package:utils" parent frame of
the global search path.
There seem to be a few others:
checkUtilsFun <- function(n)
identical(get(n, "package:utils"), get(n, getNamespace("utils")))
names(which(! sapply(ls("package:utils", all = TRUE), checkUtilsFun)))
## [1] "bug.report" "file.edit" "help.request" ## [4] "history"
"install.packages" "remove.packages" ## [7] "View"
I don't know why they don't put these overrides in the tools:rstudio frame.
At least that would make them more visible.
You can fix all of these with something like
local({
up <- match("package:utils", search())
detach("package:utils")
library(utils, pos = up)
})
or just install.packages with
local({
up <- match("package:utils", search())
unlockBinding("install.packages", pos.to.env(up))
assign("install.packages", utils::install.packages, "package:utils")
lockBinding("install.packages", pos.to.env(up))
})
Best,
luke
On Thu, 21 Mar 2024, Duncan Murdoch wrote:
> Yes, you're right. The version found in the search list entry for
> "package:utils" is the RStudio one; the ones found with two or three colons
> are the original.
>
> Duncan Murdoch
>
> On 21/03/2024 5:48 a.m., peter dalgaard wrote:
>> Um, what's with the triple colon? At least on my install, double seems to
>> suffice:
>>
>>> identical(utils:::install.packages, utils::install.packages)
>> [1] TRUE
>>> install.packages
>> function (...)
>> .rs.callAs(name, hook, original, ...)
>> <environment: 0x7f79e0019860>
>>
>> -pd
>>
>>> On 21 Mar 2024, at 09:58 , Duncan Murdoch <murdoch.duncan using gmail.com> wrote:
>>>
>>> The good news for Jorgen (who may not be reading this thread any more) is
>>> that one can still be sure of getting the original install.packages() by
>>> using
>>>
>>> utils:::install.packages( ... )
>>>
>>> with *three* colons, to get the internal (namespace) version of the
>>> function.
>>>
>>> Duncan Murdoch
>>>
>>>
>>> On 21/03/2024 4:31 a.m., Martin Maechler wrote:
>>>>>>>>> "Duncan Murdoch on Wed, 20 Mar 2024 13:20:12 -0400 writes:
>>>> > On 20/03/2024 1:07 p.m., Duncan Murdoch wrote:
>>>> >> On 20/03/2024 12:37 p.m., Ben Bolker wrote:
>>>> >>> Ivan, can you give more detail on this? I've heard this
>>>> >>> issue mentioned, but when I open RStudio and run
>>>> >>> find("install.packages") it returns
>>>> >>> "utils::install.packages", and running dump() from
>>>> >>> within RStudio console and from an external "R
>>>> >>> --vanilla" gives identical results.
>>>> >>>
>>>> >>> I thought at one point this might only refer to the GUI
>>>> >>> package-installation interface, but you seem to be
>>>> >>> saying it's the install.packages() function as well.
>>>> >>>
>>>> >>> Running an up-to-date RStudio on Linux, FWIW -- maybe
>>>> >>> weirdness only happens on other OSs?
>>>> >>
>>>> >> On MacOS, I see this:
>>>> >>
>>>> >> > install.packages function (...) .rs.callAs(name, hook,
>>>> >> original, ...) <environment: 0x7fa7c72a6268>
>>>> >>
>>>> >> I get the same results as you from find(). I'm not sure
>>>> >> what RStudio is doing to give a different value for the
>>>> >> function than what find() sees.
>>>> > Turns out that RStudio replaces the install.packages
>>>> > object in the utils package.
>>>> > Duncan Murdoch
>>>> Yes, and this has been the case for several years now, and I
>>>> have mentioned this several times, too (though some of it
>>>> possibly not in a public R-* mailing list).
>>>> And yes, that they modify the package environment
>>>> as.environment("package:utils")
>>>> but leave the
>>>> namespace asNamespace("utils")
>>>> unchanged, makes it harder to see what's
>>>> going on (but also has less severe consequences; if they kept to
>>>> the otherwise universal *rule* that the namespace and package must have
>>>> the same objects
>>>> apart from those only in the namespace,
>>>> people would not even have access to R's true install.packages()
>>>> but only see the RStudio fake^Hsubstitute..
>>>> We are still not happy with their decision. Also
>>>> help(install.packages) goes to R's documentation of R's
>>>> install.packages, so there's even more misleading of useRs.
>>>> Martin
>>>>
>>>
>>> ______________________________________________
>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> 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.
>>
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>
--
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke-tierney using uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu/
More information about the R-help
mailing list