qweytr1 m@ili@g off m@il@ustc@edu@c@
2018-Dec-21 18:34 UTC
[Rd] Bug report: R.home() cause package Rcpp failed executing sourceCpp, similar bug are labeled "BUG 16660" since 2016 and here I could provide a solution that tested in my laptop.
https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16660 Here is the bug, which R.home may generate a path contains a whitespace. this will cause Rcpp failed executing sourceCpp> sourceCpp("b:/2018-12-14/src/18020/MCMC.cpp")Error in system(cmd, intern = !showOutput) : 'D:/Program' not found Error in system(cmd, ignore.stderr = TRUE, intern = TRUE) : 'D:/Program' not found Code is tested in both R 3.5.1 and Microsoft R Open 3.5.1. I find a temp solution, is to copy such words into Rprofile: unlockBinding("R.home", baseenv()) utils::assignInNamespace("R.home",function (component = "home") { rh <- .Internal(R.home()) paste0('"',switch(component, home = rh, bin = if (.Platform$OS.type = "windows" && nzchar(p <- .Platform$r_arch)) file.path(rh, component, p) else file.path(rh, component), share = if (nzchar(p <- Sys.getenv("R_SHARE_DIR"))) p else file.path(rh, component), doc = if (nzchar(p <- Sys.getenv("R_DOC_DIR"))) p else file.path(rh, component), include = if (nzchar(p <- Sys.getenv("R_INCLUDE_DIR"))) p else file.path(rh, component), modules = if (nzchar(p <- .Platform$r_arch)) file.path(rh, component, p) else file.path(rh, component), file.path(rh, component)),'"') }, ns="base", envir=baseenv()) lockBinding("R.home", baseenv()) Actually, calling "D:/Program Files/R/R Open/bin/x64"/R is same to calling "D:/Program Files/R/R Open/bin/x64/R" it shows that we could use quote to quote the whitespaces. (although the code seems a little bit ugly) _ platform x86_64-w64-mingw32 arch x86_64 os mingw32 system x86_64, mingw32 status major 3 minor 5.1 year 2018 month 07 day 02 svn rev 74947 language R version.string R version 3.5.1 (2018-07-02) nickname Feather Spray [[alternative HTML version deleted]]
Dirk Eddelbuettel
2018-Dec-23 23:19 UTC
[Rd] Bug report: R.home() cause package Rcpp failed executing sourceCpp, similar bug are labeled "BUG 16660" since 2016 and here I could provide a solution that tested in my laptop.
The short answer, supported (if memory serves) by the R Windows FAQ, is to _not_ install in a path with spaces in the first place. Pondering why R on Windows, after all these years, still uses a path with spaces as the default choice is left as exercise to the reader. Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
Tomas Kalibera
2019-Jan-02 10:13 UTC
[Rd] Bug report: R.home() cause package Rcpp failed executing sourceCpp, similar bug are labeled "BUG 16660" since 2016 and here I could provide a solution that tested in my laptop.
To resolve this issue quickly on your side, I would recommend installing R on the C: drive which should have the short file names enabled by default. Then, R.home() will return a path name without a space (short file names do not include a space). If you for some reason need to install R on the D: drive, then it might be easiest to choose installation directory without the space, such as "D:/R". Alternatively, you can enable short file names on your D: drive. --- Re what could/should be fixed. I think code in R and packages should be robust against space in file names, it should properly quote the file names before passing to the OS. If you can debug this issue down to the place where quoting (e.g. via shQuote) is missing, I'd be happy to fix if it is in R code, please submit a bug report/patch. If it is in Rcpp or other package you may contribute a patch/ask the package maintainer to fix. Best Tomas On 12/21/18 7:34 PM, qweytr1 at mail.ustc.edu.cn wrote:> https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16660 > Here is the bug, which R.home may generate a path contains a whitespace. > > > this will cause Rcpp failed executing sourceCpp > > >> sourceCpp("b:/2018-12-14/src/18020/MCMC.cpp") > Error in system(cmd, intern = !showOutput) : 'D:/Program' not found > Error in system(cmd, ignore.stderr = TRUE, intern = TRUE) : > 'D:/Program' not found > > > > Code is tested in both R 3.5.1 and Microsoft R Open 3.5.1. > > > I find a temp solution, is to copy such words into Rprofile: > > > unlockBinding("R.home", baseenv()) > utils::assignInNamespace("R.home",function (component = "home") > { > rh <- .Internal(R.home()) > paste0('"',switch(component, home = rh, bin = if (.Platform$OS.type => "windows" && nzchar(p <- .Platform$r_arch)) file.path(rh, > component, p) else file.path(rh, component), share = if (nzchar(p <- Sys.getenv("R_SHARE_DIR"))) p else file.path(rh, > component), doc = if (nzchar(p <- Sys.getenv("R_DOC_DIR"))) p else file.path(rh, > component), include = if (nzchar(p <- Sys.getenv("R_INCLUDE_DIR"))) p else file.path(rh, > component), modules = if (nzchar(p <- .Platform$r_arch)) file.path(rh, > component, p) else file.path(rh, component), file.path(rh, > component)),'"') > }, ns="base", envir=baseenv()) > lockBinding("R.home", baseenv()) > > > Actually, calling "D:/Program Files/R/R Open/bin/x64"/R is same to calling "D:/Program Files/R/R Open/bin/x64/R" > > > it shows that we could use quote to quote the whitespaces. > > > (although the code seems a little bit ugly) > > > > _ > platform x86_64-w64-mingw32 > arch x86_64 > os mingw32 > system x86_64, mingw32 > status > major 3 > minor 5.1 > year 2018 > month 07 > day 02 > svn rev 74947 > language R > version.string R version 3.5.1 (2018-07-02) > nickname Feather Spray > > > > > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel