Martin Maechler
2021-Jan-27 08:38 UTC
[R] Error when calling (R 4.0.x on Windows) from Python
>>>>> Martin Maechler >>>>> on Tue, 26 Jan 2021 12:37:58 +0100 writes:>>>>> Marcel Baumgartner >>>>> on Tue, 26 Jan 2021 08:55:48 +0100 writes:>> Dear all, my colleague posted our issue on stackoverflow: >> Calling R script from Python does not save log file in >> version 4 - Stack Overflow >> [https://stackoverflow.com/questions/65887485/calling-r-script-from-python-does-not-save-log-file-in-version-4] >> It is about this kind of call to R: >> R.exe -f code.R --args "~/file.txt" 1> "~/log.txt" 2>&1". >> The issue is that the log.txt file is not created when >> running R 4.x.x. The same code works perfectly fine with >> R 3.6.x. >> Any idea what's going wrong as of version 4? Regards >> Marcel? > Dear Marcel, I think the solution is embarrassingly > simple: >> From the SO post, where she showed a bit more detail than you > show here, it's clear you have confused 'R.exe' and > 'Rscript.exe' and what you say above is not true: > 'R.exe' was used for R 3.6.0 but for R 4.0.3, you/she used > 'Rscript.exe' instead. > ... as you've noticed now, they do behave differently, > indeed! Well, this was not the solution to their -- Windows-only -- problem. The problem *is* indeed visible if they only use R.exe (also for R 4.0.3). I've commented more on the SO issue (see above), notably asking for a *minimal* repr.ex. (reproducible example), and one *not* using "<YOUR PATH>" and setwd() .. Martin
Note that in R-3.6.3 commandArgs() does not include the arguments intended to be processed by the shell, "1>", "arguments.txt", etc., but in R-4.0.3 it does include them. It is as though an R shell() command was replaced by a system() command so cmd.exe didn't get a chance to process the command line. -Bill On Wed, Jan 27, 2021 at 12:39 AM Martin Maechler <maechler at stat.math.ethz.ch> wrote:> > >>>>> Martin Maechler > >>>>> on Tue, 26 Jan 2021 12:37:58 +0100 writes: > > >>>>> Marcel Baumgartner > >>>>> on Tue, 26 Jan 2021 08:55:48 +0100 writes: > > >> Dear all, my colleague posted our issue on stackoverflow: > > >> Calling R script from Python does not save log file in > >> version 4 - Stack Overflow > >> [https://stackoverflow.com/questions/65887485/calling-r-script-from-python-does-not-save-log-file-in-version-4] > > >> It is about this kind of call to R: > > >> R.exe -f code.R --args "~/file.txt" 1> "~/log.txt" 2>&1". > > >> The issue is that the log.txt file is not created when > >> running R 4.x.x. The same code works perfectly fine with > >> R 3.6.x. > > >> Any idea what's going wrong as of version 4? Regards > >> Marcel > > > Dear Marcel, I think the solution is embarrassingly > > simple: > > >> From the SO post, where she showed a bit more detail than you > > show here, it's clear you have confused 'R.exe' and > > 'Rscript.exe' and what you say above is not true: > > > 'R.exe' was used for R 3.6.0 but for R 4.0.3, you/she used > > 'Rscript.exe' instead. > > > > ... as you've noticed now, they do behave differently, > > indeed! > > Well, this was not the solution to their -- Windows-only -- problem. > The problem *is* indeed visible if they only use R.exe (also > for R 4.0.3). > > I've commented more on the SO issue (see above), > notably asking for a *minimal* repr.ex. (reproducible example), > and one *not* using "<YOUR PATH>" and setwd() .. > > Martin > > ______________________________________________ > R-help at 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.
Duncan Murdoch
2021-Jan-27 20:17 UTC
[R] Error when calling (R 4.0.x on Windows) from Python
On 27/01/2021 3:38 a.m., Martin Maechler wrote:>>>>>> Martin Maechler >>>>>> on Tue, 26 Jan 2021 12:37:58 +0100 writes: > >>>>>> Marcel Baumgartner >>>>>> on Tue, 26 Jan 2021 08:55:48 +0100 writes: > > >> Dear all, my colleague posted our issue on stackoverflow: > > >> Calling R script from Python does not save log file in > >> version 4 - Stack Overflow > >> [https://stackoverflow.com/questions/65887485/calling-r-script-from-python-does-not-save-log-file-in-version-4] > > >> It is about this kind of call to R: > > >> R.exe -f code.R --args "~/file.txt" 1> "~/log.txt" 2>&1". > > >> The issue is that the log.txt file is not created when > >> running R 4.x.x. The same code works perfectly fine with > >> R 3.6.x. > > >> Any idea what's going wrong as of version 4? Regards > >> Marcel > > > Dear Marcel, I think the solution is embarrassingly > > simple: > > >> From the SO post, where she showed a bit more detail than you > > show here, it's clear you have confused 'R.exe' and > > 'Rscript.exe' and what you say above is not true: > > > 'R.exe' was used for R 3.6.0 but for R 4.0.3, you/she used > > 'Rscript.exe' instead. > > > > ... as you've noticed now, they do behave differently, > > indeed! > > Well, this was not the solution to their -- Windows-only -- problem. > The problem *is* indeed visible if they only use R.exe (also > for R 4.0.3). > > I've commented more on the SO issue (see above), > notably asking for a *minimal* repr.ex. (reproducible example), > and one *not* using "<YOUR PATH>" and setwd() .. >Isn't this purely a Python or user problem? R shouldn't process redirection directives like 1> "~/log.txt" 2>&1 because it's the shell's job to process those. If Python is acting as the shell, it needs to handle those things. If R was handling the command via Duncan Murdoch