Trouble with packrat corrupting R functioning
Asked Answered
M

2

10

I installed the package packrat at some point, used it perhaps once and moved on with my life.

However, despite not having loaded it in months, it remains a nuisance to my regular R usage.

Seemingly at random, my R session within RStudio will fail with errors at certain operations, especially package installation. Here's the most recent error message (after running parallel::makeCluster(parallel::detectCores()):

Error in file(filename, "r", encoding = encoding) : cannot open the connection

Calls: source -> file

In addition: Warning message:

In file(filename, "r", encoding = encoding) : cannot open file 'packrat/init.R': No such file or directory

Execution halted

I checked all of the folders on .libPaths() and I don't even have packrat installed anymore. Why on earth is R still trying to carry out packrat operations? And how can I stop this?

My duct-tape solution so far is to simply close and reopen RStudio, which works like a charm for package installation issues.

However, I cannot seem to get around this for makeCluster(detectCores()) within just one .R script I've got. It works perfectly fine in another script for another project.

Background:

sessionInfo()
# R version 3.2.2 (2015-08-14)
# Platform: x86_64-pc-linux-gnu (64-bit)
# Running under: Ubuntu 14.04.2 LTS

# locale:
#  [1] LC_CTYPE=en_US.UTF-8          LC_NUMERIC=C                  LC_TIME=en_US.UTF-8          
#  [4] LC_COLLATE=en_US.UTF-8        LC_MONETARY=en_US.UTF-8       LC_MESSAGES=en_US.UTF-8      
#  [7] LC_PAPER=en_US.UTF-8          LC_NAME=en_US.UTF-8           LC_ADDRESS=en_US.UTF-8       
# [10] LC_TELEPHONE=en_US.UTF-8      LC_MEASUREMENT=en_US.UTF-8    LC_IDENTIFICATION=en_US.UTF-8

# attached base packages:
# [1] parallel  stats     graphics  grDevices utils     datasets  methods   base     

# other attached packages:
#  [1] doParallel_1.0.8 iterators_1.0.7  foreach_1.4.2    geosphere_1.4-3  xlsx_0.5.7       xlsxjars_0.6.1  
#  [7] rJava_0.9-6      xtable_1.7-4     sandwich_2.3-3   texreg_1.35      maptools_0.8-36  sp_1.1-1        
# [13] ggmap_2.5.2      ggplot2_1.0.1    data.table_1.9.5

# loaded via a namespace (and not attached):
#  [1] Rcpp_0.11.6         plyr_1.8.3          tools_3.2.2         digest_0.6.8        gtable_0.1.2       
#  [6] lattice_0.20-33     png_0.1-7           mapproj_1.2-4       proto_0.3-10        stringr_1.0.0      
# [11] RgoogleMaps_1.2.0.7 maps_2.3-11         grid_3.2.2          jpeg_0.1-8          foreign_0.8-66     
# [16] RJSONIO_1.3-0       reshape2_1.4.1      magrittr_1.5        codetools_0.2-11    scales_0.2.5       
# [21] MASS_7.3-43         colorspace_1.2-6    stringi_0.5-9003    munsell_0.4.2       chron_2.3-47       
# [26] rjson_0.2.15        zoo_1.7-12 

Update 1:

Installing packrat had no effect. Running packrat::init() resulted in an error before finishing; nothing changed.

Update 2:

I've isolated the problem by identifying that it's the working directory that's causing the issues. What in the working directory I'm using might be causing the problems? Some residual file from having run packrat previously in this directory?

Marinna answered 1/9, 2015 at 19:0 Comment(4)
The warning (but not the error) is saying that it is not available which implies that one of your programs expects it to be. Looking at the google hits, it appears to be an "enhancement" intended to be in place by RStudio devs.Mongrelize
@BondedDust thanks; so installing packrat should solve the problem?Marinna
Well, that is what I would try, but I'm not an RStudio user.Mongrelize
@BondedDust thanks. How bout this for a catch 22: I get the packrat error when running install.packages("packrat") smhMarinna
M
9

Through further trial and error given the prods of @BondedDust I finally appear to have solved the issue. Having previously tried to use packrat in the particular working directory in which I was working appears to have left some vestiges despite later uninstalling packrat.

In particular, packrat edits your local .Rprofile (original credit due to @zerweck and @snaut), which is source()d on R startup in that directory.

If you use the .Rprofile to store some local configurations, you should edit the file and remove the packrat lines (or any you don't recognize); otherwise, you should just delete that file to restore your project to working as expected.

Marinna answered 1/9, 2015 at 20:36 Comment(0)
C
4

Check your HOME directory for an unintentional .Rprofile.

Packrat may have put this here if you tried to packrat::init() in HOME.

install.package() with packrat looks for .Rprofile when run. The behavior I've observed has it prioritizing the HOME .Rprofile over the getwd() one, causing the

cannot open file 'packrat/init.R': No such file or directory
Copybook answered 14/3, 2019 at 19:18 Comment(1)
That's exactly what happened to me after accidentally initializing packrat in a fresh session. Remove the offending source lines from your ~/.Rprofile.Curium

© 2022 - 2024 — McMap. All rights reserved.