Re: [Rd] Shouldn't "Loading" be "Attaching" when referring to library() calls?
> Martin Maechler > on Tue, 10 Jan 2023 10:26:53 +0100 writes: > Michael Chirico via R-devel > on Mon, 9 Jan 2023 12:25:46 -0800 writes: >> require() and library() both emit this message immediately before >> running library(): >> "Loading required package: %s" >> https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L967-L968 >> https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L684-L685 >> Shouldn't "Loading" be "Attaching" instead? > Good question... I had asked myself as well a couple of times. > The vagueness is mostly "historical" in the sense that > originally R (nor S) had namespaces. Oops! If you skip the "( .. )" above it's 100% wrong. Correct (I hope even according Oxford Dictionary) is " Originally, neither R nor S had namespaces. " > OTOH, attach(.) has always worked for data frames (already in pre-R S). > Still, I agree (when teaching and otherwise), we should > clearly distinguish the two notably in the context of packages > and their namespaces. >> My understanding is "a package is loaded" is equivalent to >> "isNamespaceLoaded()", i.e., loadNamespace() was run. And that "a >> package is attached" is equivalent to "pkg %in% .packages()", i.e., >> library(pkg) was run. > or (easier for teaching) that "package:" %in% search() > -- which is what .packages() does {by default}. > I agree with the above. >> Is the terminology not so precise? >> There's certainly ambiguity in the internal variable names referenced >> above -- in require, we see >> loaded <- paste0("package:", package) %in% search() >> https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L680 > again, historical: require() exists for considerably longer > than namespaces. > I think we should at least change the message printed by > require() and library() you mentioned above. > Martin >> Whereas in library() [via .getRequiredPackages2()] we see >> attached <- paste0("package:", pkg) %in% search() >> https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L931 >> Mike C > __ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] Shouldn't "Loading" be "Attaching" when referring to library() calls?
> Michael Chirico via R-devel > on Mon, 9 Jan 2023 12:25:46 -0800 writes: > require() and library() both emit this message immediately before > running library(): > "Loading required package: %s" > https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L967-L968 > https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L684-L685 > Shouldn't "Loading" be "Attaching" instead? Good question... I had asked myself as well a couple of times. The vagueness is mostly "historical" in the sense that originally R (nor S) had namespaces. OTOH, attach(.) has always worked for data frames (already in pre-R S). Still, I agree (when teaching and otherwise), we should clearly distinguish the two notably in the context of packages and their namespaces. > My understanding is "a package is loaded" is equivalent to > "isNamespaceLoaded()", i.e., loadNamespace() was run. And that "a > package is attached" is equivalent to "pkg %in% .packages()", i.e., > library(pkg) was run. or (easier for teaching) that "package:" %in% search() -- which is what .packages() does {by default}. I agree with the above. > Is the terminology not so precise? > There's certainly ambiguity in the internal variable names referenced > above -- in require, we see > loaded <- paste0("package:", package) %in% search() > https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L680 again, historical: require() exists for considerably longer than namespaces. I think we should at least change the message printed by require() and library() you mentioned above. Martin > Whereas in library() [via .getRequiredPackages2()] we see > attached <- paste0("package:", pkg) %in% search() > https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L931 > Mike C __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[Rd] Shouldn't "Loading" be "Attaching" when referring to library() calls?
require() and library() both emit this message immediately before running library(): "Loading required package: %s" https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L967-L968 https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L684-L685 Shouldn't "Loading" be "Attaching" instead? My understanding is "a package is loaded" is equivalent to "isNamespaceLoaded()", i.e., loadNamespace() was run. And that "a package is attached" is equivalent to "pkg %in% .packages()", i.e., library(pkg) was run. Is the terminology not so precise? There's certainly ambiguity in the internal variable names referenced above -- in require, we see loaded <- paste0("package:", package) %in% search() https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L680 Whereas in library() [via .getRequiredPackages2()] we see attached <- paste0("package:", pkg) %in% search() https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L931 Mike C __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel