Мне любопытно узнать, есть ли способ сохранить все из консоли 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()
.
Кто-нибудь может мне помочь с любой альтернативой?
Спасибо ..