[R] Error when calling (R 4.0.x on Windows) from Python

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Wed Jan 27 21:26:08 CET 2021


On 27/01/2021 3:17 p.m., Duncan Murdoch wrote:
> 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

Oops, sent before finishing:

If R was handling the command via system() or system2(), it would handle 
redirection itself. If it was using the Windows-only shell(), it would 
call cmd.exe (by default) to handle redirection.  (This is a difference 
between R on Windows and R in Unix:  in Unix a shell is always used.)

Duncan Murdoch



More information about the R-help mailing list