Как я могу избежать печати R script при каждом запуске?
Предположим, что у меня есть R script:
library('nnet')
something <- runif(50);
print(something)
Когда я запускаю этот script из командной строки, он печатает:
> library('nnet')
> something <- runif(5);
> print(something)
[1] 0.04665518 0.93574275 0.96387299 0.07410239 0.92834019
Я бы хотел, чтобы он печатался только:
[1] 0.04665518 0.93574275 0.96387299 0.07410239 0.92834019
и я не могу понять, как это сделать. sink ( "/dev/null" ) ничего не делает, перенаправление stderr вручную ничего не делает, и я не могу найти полезной информации об этом.
Ответы
Ответ 1
Разрешение должно выполняться с Rscript, а не с R. Примеры в другом месте (например, Как читать параметры командной строки из R script?), запустите сценарии из командной строки с помощью
R --args args1 args2... < foo.R
работает с
Rscript foo.R args1 args2 ...
выводит только вывод, а не script. Это также более чистый способ запуска скриптов.
Ответ 2
Не пользователь R, но разве это может быть полезно для вас?
Как запустить "R" script без подавления вывода?
Из связанного вопроса:
укажите print.eval
параметр, установленный на TRUE
, если вы хотите получить только вывод (а не команды). Если вам понадобятся также команды, вы должны установить echo
в TRUE
(что означает установку print.eval
на TRUE
).
Например:
source('myscript.R', print.eval = TRUE)
Ответ 3
source( 'path/name/filnam.R' , verbose=FALSE)
Ответ 4
Для запуска в терминале напрямую:
R --slave --args dense 12 0.98 < foo.R
Для запуска скрипта R из Python:
process = subprocess.Popen(["R --slave --args %s %d %.2f < /path/to/your/rscript/foo.R" % (, 12, 0.98) ], shell=True)
process.wait()
Для запуска R-скрипта в терминале/командной строке и в фоновом режиме, при этом подавляйте/не печатайте каждую строку скриптов и вывод программы, используя R CMD BATCH следующим образом:
R CMD BATCH--slave foo.R 2>&1 foo.out &
Смотрите также эту ссылку
Ответ 5
Для RStudio IDE (версия 1.1.383) в Windows:
Нажатие клавиш Ctrl + Shift + Enter выполняется целым script с эхом (verbose)
Нажатие клавиш Ctrl + Shift + S выполняется целым script без эха (без вербального)