Я недавно обновился с R 3.4.3 до R 3.5.1
Мое приложение выполняет вызов system2 (), который работает в 3.4.3 как для Windows, так и для Linux, но больше не работает в 3.5.1 Windows (но все еще работает в Linux).В частности, мой вызов system2 () перенаправляет стандартный вывод в файл, однако в Windows 3.5.1 он не перенаправляет, а отправляет вывод на консоль.
Кто-нибудь имеет опыт работы с этой проблемой?Я не нашел никаких заметок об изменении того, как system2 должен работать;я пропускаю ожидаемое изменение его поведения?Какие-нибудь обходные пути, которые я могу использовать, чтобы заставить это работать?
Я создал этот фрагмент кода, чтобы продемонстрировать проблему:
version$version.string
unlink("output.txt")
file.exists("output.txt")
system2("cmd", args = c("/c", "echo", "hello world"), stdout = TRUE)
system2("cmd", args = c("/c", "echo", "hello world"), stdout = "output.txt")
file.exists("output.txt")
readLines("output.txt")
Вывод из 3.4.3:
> version$version.string
[1] "R version 3.4.3 (2017-11-30)"
> unlink("output.txt")
> file.exists("output.txt")
[1] FALSE
> system2("cmd", args = c("/c", "echo", "hello world"), stdout = TRUE)
[1] "hello world"
> system2("cmd", args = c("/c", "echo", "hello world"), stdout = "output.txt")
> file.exists("output.txt")
[1] TRUE
> readLines("output.txt")
[1] "hello world"
Выход из 3.5.1 на windows:
> version$version.string
[1] "R version 3.5.1 (2018-07-02)"
> unlink("output.txt")
> file.exists("output.txt")
[1] FALSE
> system2("cmd", args = c("/c", "echo", "hello world"), stdout = TRUE)
[1] "hello world"
> system2("cmd", args = c("/c", "echo", "hello world"), stdout = "output.txt")
hello world
> file.exists("output.txt")
[1] FALSE
> readLines("output.txt")
Error in file(con, "r") : cannot open the connection
In addition: Warning message:
In file(con, "r") :
cannot open file 'output.txt': No such file or directory
Выход из 3.5.1 на linux:
> version$version.string
[1] "R version 3.5.1 (2018-07-02)"
> unlink("output.txt")
> file.exists("output.txt")
[1] FALSE
> system2("echo", args = c("hello world"), stdout = TRUE)
[1] "hello world"
> system2("echo", args = c("hello world"), stdout = "output.txt")
> file.exists("output.txt")
[1] TRUE
> readLines("output.txt")
[1] "hello world"