[R] Building Packages.

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Thu Mar 21 10:52:58 CET 2024


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.
>



More information about the R-help mailing list