[R] Problems with installing R packages from source and running C++ in R, even on fresh R installation

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Wed Aug 30 23:28:28 CEST 2023


TL:DR there are at least three maybe four ways to address this depending on what you plan to do.

I usually adjust PATH to add Rtools using .Rprofile. But if you do that then if you want to use the command line to invoke R then you need to set the PATH separately when you start the shell. For this reason some people like to set it in the User Environment Variables control panel... but some Rtools programs conflict with some Cygwin tools so I don't like to set it globally that way since I use Cygwin a lot.

Finally, I _think_ RStudio will try to look up your Rtools and adjust settings automagically from within RStudio, but only if you have never previously configured it in your environment variables. But that is only inferred from reports I have read that imply they never manually set anything and it "just works"... I have always set it up manually. If this sounds attractive then you might try making sure Rtools is NOT in your PATH before RStudio starts up _and_ that it isn't configured in your .Rprofile file.

On August 30, 2023 12:10:28 PM PDT, Duncan Murdoch <murdoch.duncan using gmail.com> wrote:
>On 30/08/2023 2:59 p.m., Ivan Krylov wrote:
>> On Wed, 30 Aug 2023 16:31:20 +0000
>> Christophe Bousquet <chr_bousquet using protonmail.com> wrote:
>> 
>>>   So, yes, it seems possible for R to localize paths related to
>>> Rtools... But then, I really do not get where things go wrong...
>> 
>> When installing packages containing code to compile, R eventually calls
>> R CMD SHLIB. Same thing happens with inline C++: it gets stored in a
>> temporary file, compiled into a *.dll using R CMD SHLIB and then loaded
>> using dyn.load().
>> 
>> Write the following into a file named hello.c:
>> 
>> #include <R.h>
>> #include <Rinternals.h>
>> SEXP hello(void) {
>>          SEXP ret = PROTECT(allocVector(STRSXP, 1));
>>          SET_STRING_ELT(ret, 0, mkChar("hello"));
>>          UNPROTECT(1);
>>          return ret;
>> }
>> 
>>  From within R, setwd() to the directory containing hello.c and run:
>> 
>> tools::Rcmd('SHLIB -n hello.c')
>> tools::Rcmd('SHLIB hello.c')
>> 
>> What do the commands print? Does the second command fail?
>> 
>> (Let's Cc: R-help using r-project.org in case people with more experience
>> debugging Windows problems have a better idea what's going on.)
>> 
>
>It sounds exactly as though Rtools files aren't on the path that's in effect when R starts.  That's probably the one stored in the registry. In the old days it was set in the System app in the Windows Control Panel under "Edit the system environment variables".  I don't know if that's still true.
>
>Duncan Murdoch
>
>______________________________________________
>R-help using 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.

-- 
Sent from my phone. Please excuse my brevity.



More information about the R-help mailing list