Calling R script from Python does not save log file in version 4

Rhelp people got this solved, thank you, Duncan Murdoch!

Solution 1:

import os
pth = "<YOUR PATH>"
os.system(" ".join(["C:/R/R-4.0.3/bin/x64/R.exe", "-f", '"' + pth + '/RCode.R"', "--args", 
                '"' + pth + '/arguments.txt"',"1>", '"' + pth + '/log.txt"']))

Solution 2:

import subprocess
pth = "<YOUR PATH>"
subprocess.call(" ".join(["1>", '"' + pth + '/log.txt"', "2>&1",
                          "C:/R/R-4.0.3/bin/x64/R.exe", "-f", '"' + pth + '/RCode.R"', "--args", 
                '"' + pth + '/arguments.txt"']), shell = True)

well, in one case (3.6.0) you use R.exe , in the other (4.0.3) Rscript.exe. Both R and Rscript have existed for a long time, and they have always had slightly different behavior.

You really should not confuse them with each other (even though, on Windows, I see, they look like the same file .. they will not behave the same).

Ok, now you use R.exe for both. Just to find out more / see more where the problem may happen, can you try all of

  1. using a minimal reproducible example, i.e. one we can use directly ourselves, i.e., not using "<YOUR PATH>" (nor setwd(.))
  2. not using file names with a ' ' (space), i.e., e.g., use code.R
  3. calling this from a "terminal"/shell instead of as python subprocess ?

Last but not least: Yes, for R 4.0.0, a completely updated toolset ("brandnew toolchain", e.g. much newer C compiler) was used to build R for windows, "Rtools 4.0" or rtools40: https://cran.r-project.org/bin/windows/Rtools/ . So changes are expected but should typically only have been to the better, not the worse ..