[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