PIKAL Petr
2023-Mar-21 13:58 UTC
[R] Rprofile.site and automatic installation of missing packages
Hallo Duncan Tested but does not work so something other must be wrong. R version 4.2.2.> installed.packages()[,"Package"]base boot class cluster codetools compiler datasets foreign graphics grDevices grid KernSmooth "base" "boot" "class" "cluster" "codetools" "compiler" "datasets" "foreign" "graphics" "grDevices" "grid" "KernSmooth" lattice MASS Matrix methods mgcv nlme nnet parallel rpart spatial splines stats "lattice" "MASS" "Matrix" "methods" "mgcv" "nlme" "nnet" "parallel" "rpart" "spatial" "splines" "stats" stats4 survival tcltk tools translations utils "stats4" "survival" "tcltk" "tools" "translations" "utils" My Rprofile.site # Things you might want to change options(papersize="a4") options(help_type="html") library(utils) library(MASS) #********** test <-(scan("pack.txt", character(), quote = "")) x<- utils::installed.packages() utils::install.packages(test[!test %in% x], repos="https://cloud.r-project.org") ##********** Options are set and working. MASS should be loaded but is not> search()[1] ".GlobalEnv" "package:stats" "package:graphics" "package:grDevices" "package:utils" "package:datasets" "package:methods" "Autoloads" "package:base">Any suggestion where to look? Best regards Petr -----Original Message----- From: Duncan Murdoch <murdoch.duncan at gmail.com> Sent: Tuesday, March 21, 2023 1:55 PM To: PIKAL Petr <petr.pikal at precheza.cz>; r-help <r-help at r-project.org> Subject: Re: [R] Rprofile.site and automatic installation of missing packages ?Startup says: "Note that when the site and user profile files are sourced only the base package is loaded, so objects in other packages need to be referred to by e.g. utils::dump.frames or after explicitly loading the package concerned." So you need utils::installed.packages and utils::install.packages . Duncan Murdoch On 21/03/2023 8:04 a.m., PIKAL Petr wrote:> Dear all. > > > > I am trying to install missing (not installed) packages during startup > of R through code in Rprofile.site but I miserably failed and I am not > sure what I am doing wrong. > > > > R is installed to C:Program files but it is not writable for the > users, therefore I cannot change Rprofile.site located in root etc > directory. I however can put Rprofile.site in users home directory > (Documents) and use it for R startup setting (partly). > > However I want for less experienced users to put a code here to check > installed packages, check if some specified set of packages is > installed and install them, but it is not working. > > > > The code in Rprofile.site is: > > > > #********** > > test <- scan("pack.txt", character(), quote = "") > > inst <- installed.packages() > > install.packages(test[!test %in% inst], > repos="https://cloud.r-project.org") > > #********** > > > > An example of pack.txt is e.g. > > ggplot2 > > zoo > > > > but the code is not executed and packages are not installed. If I use > this code after R starts, everything is OK and packages are installed > to > > > >> Sys.getenv("R_LIBS_USER") > > [1] "C:\\Users\\PikalP\\AppData\\Local/R/win-library/4.2" > >> > > The same applies if I put e.g. library(MASS) in the Rprofile.site, the > package is not loaded but after R is live, library(MASS) loads a package. > > > > So my question is What is the best way to check after fresh R > installation if some predefined set of packages is installed and if > not, perform an installation without user intervention in Windows environment? > > > > S pozdravem | Best Regards > > Petr > > > ______________________________________________ > R-help at 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.Osobn? ?daje: Informace o zpracov?n? a ochran? osobn?ch ?daj? obchodn?ch partner? PRECHEZA a.s. jsou zve?ejn?ny na: https://www.precheza.cz/zasady-ochrany-osobnich-udaju/ | Information about processing and protection of business partner?s personal data are available on website: https://www.precheza.cz/en/personal-data-protection-principles/ D?v?rnost: Tento e-mail a jak?koliv k n?mu p?ipojen? dokumenty jsou d?v?rn? a podl?haj? tomuto pr?vn? z?vazn?mu prohl??en? o vylou?en? odpov?dnosti: https://www.precheza.cz/01-dovetek/ | This email and any documents attached to it may be confidential and are subject to the legally binding disclaimer: https://www.precheza.cz/en/01-disclaimer/
Duncan Murdoch
2023-Mar-21 16:42 UTC
[R] Rprofile.site and automatic installation of missing packages
On 21/03/2023 9:58 a.m., PIKAL Petr wrote:> Hallo Duncan > > Tested but does not work so something other must be wrong. > > R version 4.2.2. >> installed.packages()[,"Package"] > base boot class cluster codetools compiler datasets foreign graphics grDevices grid KernSmooth > "base" "boot" "class" "cluster" "codetools" "compiler" "datasets" "foreign" "graphics" "grDevices" "grid" "KernSmooth" > lattice MASS Matrix methods mgcv nlme nnet parallel rpart spatial splines stats > "lattice" "MASS" "Matrix" "methods" "mgcv" "nlme" "nnet" "parallel" "rpart" "spatial" "splines" "stats" > stats4 survival tcltk tools translations utils > "stats4" "survival" "tcltk" "tools" "translations" "utils" > > My Rprofile.site > # Things you might want to change > options(papersize="a4") > options(help_type="html") > > library(utils) > library(MASS) > > #********** > test <-(scan("pack.txt", character(), quote = "")) > x<- utils::installed.packages() > utils::install.packages(test[!test %in% x], repos="https://cloud.r-project.org") > > ##********** > > Options are set and working. > MASS should be loaded but is not > >> search() > [1] ".GlobalEnv" "package:stats" "package:graphics" "package:grDevices" "package:utils" "package:datasets" "package:methods" "Autoloads" "package:base" >> > > Any suggestion where to look?I'd add code to print the values of x and test to confirm that things are proceeding as you expect. I don't know if print() or cat() will work there; you might need to use message(). For attaching packages, you should see ?Startup again: this is done via options() or an environment variable, not library() calls in the profile file. Duncan Murdoch> > Best regards > Petr > > -----Original Message----- > From: Duncan Murdoch <murdoch.duncan at gmail.com> > Sent: Tuesday, March 21, 2023 1:55 PM > To: PIKAL Petr <petr.pikal at precheza.cz>; r-help <r-help at r-project.org> > Subject: Re: [R] Rprofile.site and automatic installation of missing packages > > ?Startup says: "Note that when the site and user profile files are sourced only the base package is loaded, so objects in other packages need to be referred to by e.g. utils::dump.frames or after explicitly loading the package concerned." > > So you need utils::installed.packages and utils::install.packages . > > Duncan Murdoch > > On 21/03/2023 8:04 a.m., PIKAL Petr wrote: >> Dear all. >> >> >> >> I am trying to install missing (not installed) packages during startup >> of R through code in Rprofile.site but I miserably failed and I am not >> sure what I am doing wrong. >> >> >> >> R is installed to C:Program files but it is not writable for the >> users, therefore I cannot change Rprofile.site located in root etc >> directory. I however can put Rprofile.site in users home directory >> (Documents) and use it for R startup setting (partly). >> >> However I want for less experienced users to put a code here to check >> installed packages, check if some specified set of packages is >> installed and install them, but it is not working. >> >> >> >> The code in Rprofile.site is: >> >> >> >> #********** >> >> test <- scan("pack.txt", character(), quote = "") >> >> inst <- installed.packages() >> >> install.packages(test[!test %in% inst], >> repos="https://cloud.r-project.org") >> >> #********** >> >> >> >> An example of pack.txt is e.g. >> >> ggplot2 >> >> zoo >> >> >> >> but the code is not executed and packages are not installed. If I use >> this code after R starts, everything is OK and packages are installed >> to >> >> >> >>> Sys.getenv("R_LIBS_USER") >> >> [1] "C:\\Users\\PikalP\\AppData\\Local/R/win-library/4.2" >> >>> >> >> The same applies if I put e.g. library(MASS) in the Rprofile.site, the >> package is not loaded but after R is live, library(MASS) loads a package. >> >> >> >> So my question is What is the best way to check after fresh R >> installation if some predefined set of packages is installed and if >> not, perform an installation without user intervention in Windows environment? >> >> >> >> S pozdravem | Best Regards >> >> Petr >> >> >> ______________________________________________ >> R-help at 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. > > Osobn? ?daje: Informace o zpracov?n? a ochran? osobn?ch ?daj? obchodn?ch partner? PRECHEZA a.s. jsou zve?ejn?ny na: https://www.precheza.cz/zasady-ochrany-osobnich-udaju/ | Information about processing and protection of business partner?s personal data are available on website: https://www.precheza.cz/en/personal-data-protection-principles/ > D?v?rnost: Tento e-mail a jak?koliv k n?mu p?ipojen? dokumenty jsou d?v?rn? a podl?haj? tomuto pr?vn? z?vazn?mu prohl??en? o vylou?en? odpov?dnosti: https://www.precheza.cz/01-dovetek/ | This email and any documents attached to it may be confidential and are subject to the legally binding disclaimer: https://www.precheza.cz/en/01-disclaimer/ >