Как сохранить все из консоли в текстовый файл при выполнении сценария R с использованием «remoteScript» Microsoft R? - PullRequest
0 голосов
/ 13 ноября 2018

Мне любопытно узнать, есть ли способ сохранить все из консоли R в текстовый файл, когда сценарий R передается и выполняется «удаленно» с клиента Microsoft R на сервер Microsoft R с помощью команды remoteScript() или remoteExecute().

Например, рассмотрим простой R-скрипт 'test.R' следующим образом:

set.seed(123)
x <- rnorm(100)
mean(x)

Я знаю, чтобы сохранить все с консоли, это может быть выполнено в сеансе Local R следующим образом:

Локальный сеанс R:

# Create a text file to save all from console 
logfile <- file("C:/.../MyLog1.txt")
sink(logfile, append = TRUE)
sink(logfile, append = TRUE, type = "message")

# Execute in the local R session
source("C:/.../test.R", echo = TRUE, max.deparse.length = 1000000)

sink()
sink(type = "message")

В файле журнала 'MyLog1.txt', как и ожидалось, есть все из консоли:

> set.seed(123)
> x <- rnorm(100)
> mean(x)
[1] 0.09040591

Аналогичным образом, тот же сценарий можно выполнить с помощью remoteScript() после подключения к серверу R.

Удаленный сеанс R:

# Connect to the server and create a remote session
remoteLogin(...)

# Go back to the local R session
pause()

# Create a text file to save all from console 
logfile <- file("C:/.../MyLog2.txt")
sink(logfile, append = TRUE)
sink(logfile, append = TRUE, type = "message")

# Execute in the remote R session
remoteScript("C:/.../test.R")

sink()
sink(type = "message")

Но файл журнала 'MyLog2.txt' выглядит иначе, как показано ниже:

[1] 0.09040591
$success
[1] TRUE

$errorMessage
[1] ""

$outputParameters
list()

$consoleOutput
[1] "[1] 0.09040591\r\n"

$changedFiles
list()

$backgroundUpdate
[1] 0

Имеется только «Вывод» и некоторая дополнительная информация. Каждая строка кода с командной строкой '>' не была напечатана как 'MyLog1.txt'. Это может быть из-за того, что нет опции типа echo=TRUE для remoteScript().

Кто-нибудь может мне помочь с любой альтернативой?

Спасибо ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...