Thanks Henrik, but I have 2 reasons for not using that approach: A) If I don't map the drive until after R starts the UNC path is already present in several places I know about and probably some I don't, leading to the problems I started with.
So reason 'B' doesn't really matter to me, but as author of R.utils you may be interested that... B) On my system those calls don't seem to work. Details here... -------------------------- > library("R.utils") Loading required package: R.oo Loading required package: R.methodsS3 R.methodsS3 v1.2.1 (2010-09-18) successfully loaded. See ?R.methodsS3 for help. R.oo v1.8.1 (2011-07-10) successfully loaded. See ?R.oo for help. R.utils v1.7.8 (2011-07-24) successfully loaded. See ?R.utils for help. > sessionInfo() R version 2.13.1 (2011-07-08) Platform: i386-pc-mingw32/i386 (32-bit) locale: [1] LC_COLLATE=English_United Kingdom.1252 [2] LC_CTYPE=English_United Kingdom.1252 [3] LC_MONETARY=English_United Kingdom.1252 [4] LC_NUMERIC=C [5] LC_TIME=English_United Kingdom.1252 attached base packages: [1] datasets grDevices splines graphics stats utils tcltk [8] tools methods base other attached packages: [1] R.utils_1.7.8 R.oo_1.8.1 R.methodsS3_1.2.1 RODBC_1.3-3 [5] tree_1.0-29 nlme_3.1-102 MASS_7.3-14 xlsReadWrite_1.5.4 [9] svSocket_0.9-51 TinnR_1.0.3 R2HTML_2.2 Hmisc_3.8-3 [13] survival_2.36-9 loaded via a namespace (and not attached): [1] cluster_1.14.0 grid_2.13.1 lattice_0.19-31 svMisc_0.9-61 # It seems to think I have no mapped drives.... > System$getMappedDrivesOnWindows() named character(0) # Although I clearly have (in fact I'm running R from Z:), so I can't # find a 'spare' drive letter > system("net use") New connections will not be remembered. Status Local Remote Network ------------------------------------------------------------------------------- OK F: \\server10\microbiology Microsoft Windows Network OK L: \\server23\Stats Microsoft Windows Network OK M: \\server10\jewell Microsoft Windows Network OK Q: \\server04\pccommon (not backed up) Microsoft Windows Network OK R: \\server23\Template Microsoft Windows Network Z: \\campden\shares\Workgroup\Stats Microsoft Windows Network \\TSCLIENT\C Microsoft Terminal Services \\TSCLIENT\D Microsoft Terminal Services \\TSCLIENT\E Microsoft Terminal Services \\TSCLIENT\F Microsoft Terminal Services \\TSCLIENT\G Microsoft Terminal Services \\TSCLIENT\H Microsoft Terminal Services \\TSCLIENT\I Microsoft Terminal Services \\TSCLIENT\L Microsoft Terminal Services \\TSCLIENT\M Microsoft Terminal Services \\TSCLIENT\Q Microsoft Terminal Services \\TSCLIENT\R Microsoft Terminal Services The command completed successfully. # The commands you cited throw errors... > System$mapDriveOnWindows("K", "\\\\campden\\shares\\Workgroup\\Stats") Error in list(`System$mapDriveOnWindows("K", "\\\\campden\\shares\\Workgroup\\Stats")` = <environment>, : [2011-08-19 09:16:28] Exception: Argument 'drive' is not a valid drive (e.g. 'Y:'): K at throw(Exception(...)) at throw.default("Argument 'drive' is not a valid drive (e.g. 'Y:'): ", drive) at throw("Argument 'drive' is not a valid drive (e.g. 'Y:'): ", drive) at method(static, ...) at System$mapDriveOnWindows("K", "\\\\campden\\shares\\Workgroup\\Stats") > driveLetters <- System$getMappedDrivesOnWindows() > driveLetters named character(0) > System$unmapDriveOnWindows("K") Error in list(`System$unmapDriveOnWindows("K")` = <environment>, `method(static, ...)` = <environment>, : [2011-08-19 09:29:09] Exception: Argument 'drive' is not a valid drive (e.g. 'Y:'): K at throw(Exception(...)) at throw.default("Argument 'drive' is not a valid drive (e.g. 'Y:'): ", drive) at throw("Argument 'drive' is not a valid drive (e.g. 'Y:'): ", drive) at method(static, ...) at System$unmapDriveOnWindows("K") Thanks for your interest, Keith Jewell --------------------------------------------- "Henrik Bengtsson" <h...@biostat.ucsf.edu> wrote in message news:cafdcvcqe3uukmmqsjj0fpevfjgrabrgbt1g8drcxgpnsjeb...@mail.gmail.com... I think you can also do this from within R (e.g. in your .Rprofile) using the R.utils package; library("R.utils") System$mapDriveOnWindows("K", "\\\\campden\\shares\\Workgroup\\Stats") driveLetters <- System$getMappedDrivesOnWindows() System$unmapDriveOnWindows("K") These methods utilize 'subst' of MS Windows. /Henrik On Thu, Aug 18, 2011 at 6:12 PM, Keith Jewell <k.jew...@campden.co.uk> wrote: > Just to close this off, in case it helps anyone else in a similar > situation... > > Background: I have R installed on a UNC share with a site library named by > major and minor version, thus: > \\campden\shares\Workgroup\Stats 'root' > \\campden\shares\Workgroup\Stats\R base for R related things > \\campden\shares\Workgroup\Stats\R\R-2.13.1 one R installation > \\campden\shares\Workgroup\Stats\R\library site libraries go here > \\campden\shares\Workgroup\Stats\R\library\2.13 site library for R 2.13.x > > I took the hint and mapped a drive from which to start R. > Because I don't have a pre-determined drive letter to use I wrote a little > .bat file to do the job: > ------------------ > REM find or 'net use' a drive mapped to stats share > set remote=\\campden\shares\Workgroup\Stats > set drive= > :check > for /f "delims=*" %%a in ('net use ^| find "%remote%"') do set drive=%%a > if not defined drive net use * %remote% /persistent:NO>nul & goto check > set StatsDrive=%drive:~13,2% > REM using that drive > REM a) ensure GTK+ is in the path (for packages such as 'playwith') > REM b) start 32 bit R > set path=%StatsDrive%/R/GTK+/bin;%path% > start %StatsDrive%\R\R-2.13.1\bin\i386\Rgui.exe > ---------------------------------------- > That's a bit flakey, depending on the exact format of the output from 'net > use'. If anyone has a better solution, I'll appreciate it! > > Now the site library: > Putting a UNC path into Renviron.site thus... > R_LIBS_SITE=//campden/shares/workgroup/stats/R/library/%v > ... was the cause of my original problem. > I can't put it in as a mapped drive, because I don't know the drive until > run time. > I tried to work up and down from the drive mapped R_HOME... > R_LIBS_SITE=${R_HOME}/.../library/%v > ... but that didn't work in Renviron.site. >> Sys.getenv("R_HOME") > [1] "Z:/R/R-2.13.1" > ... which is fine, but... >> Sys.getenv("R_LIBS_SITE") > [1] "Z:RR-2.13.1/.../library/2.13" > I think this may be something to do with this quote from ?Startup... > "value is then processed in a similar way to a Unix shell: in particular > the > outermost level of (single or double) quotes is stripped, and backslashes > are removed except inside quotes" > ...but I don't have any control over R_HOME, specifically how and when > forward- or back-slashes are used or removed. > > In the end I used Renviron.site just to pass the version information... > R_Libs_Site=%v > That directory doesn't exist so doesn't get added to .libPaths() > In Rprofile.site I worked up and down from R_HOME... > .libPaths(file.path(dirname(R.home()),"library",Sys.getenv("R_Libs_Site"))) > ... which seems to do the job. > > It isn't pretty, and the .bat file will probably need changing in future > versions of Windows. > But by the time R has started there isn't a UNC path in sight. > I still think I've probably re-invented a wheel and ended up with > something > square, but it is going round. > > Best regards, > > Keith Jewell > > "Keith Jewell" <k.jew...@campden.co.uk> wrote in message > news:j22q11$9u9$1...@dough.gmane.org... >> Thanks Uwe. >> >> I'm aware (and have been forcefully reminded) that using a mapped drive >> avoids these problems. But there is no single drive letter which I can >> use >> site-wide, so I have problems with things like R_LIBS_SITE. As I've >> outlined I'm exploring a range of solutions, including mapping a drive >> where I can. >> >> I posted in the hope of learning from and perhaps helping those with >> similar problems. I hope that it is permissible to discuss non-canonical >> use of R on this list, I certainly did not intend disrespect for the R >> developers (or to make typing errors). >> >> Best regards >> >> Keith Jewell >> >> "Uwe Ligges" <lig...@statistik.tu-dortmund.de> wrote in message >> news:4e44091e.7090...@statistik.tu-dortmund.de... >>> This is extremely tricky since Windows does not always accept "//" >>> rather >>> than "\\". Additionally, there is not implemented system call in >>> Windows, >>> hence ?Sys.glob tells us a "partial emulation" is provided and "An >>> attempt is made to handle UNC paths starting with a double backslash." >>> >>> As you have seenm this does not work everywhere, therefore it is >>> advisable to run R from mapped drives - as I am doing in the network of >>> our university for 13 years without problems now. >>> >>> Best, >>> Uwe Ligges >>> >>> <snip> ______________________________________________ R-help@r-project.org mailing list 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.