назначение объекта R для запуска цепочки команд - PullRequest
0 голосов
/ 19 сентября 2019

Я учусь использовать bookdown для одновременной визуализации документов PDF и Word из одного и того же файла Rmd.Поскольку я хочу просмотреть вывод PDF с использованием Sumatra PDF reader, который не может автоматически перезагрузить измененные документы для документов, отображаемых в интерфейсе электронной книги (см. ReloadModified Documents в https://www.sumatrapdfreader.org/settings.html)., я создал одну строку для запуска каждый раз, когда яотрендерить файл PDF и просмотреть его в программе чтения PDF Sumatra, как показано ниже:

bookdown::render_book('index.Rmd',output_format = 'all',new_session = TRUE,preview=TRUE);
system('cmd.exe',input='taskkill /IM SumatraPDFPortable.exe');
system('cmd.exe',input='"C:/PortableApps/SumatraPDFPortable/SumatraPDFPortable.exe" "E:/output.pdf"')

Я хотел бы знать, можно ли назначить объект R (скажем, rendernow) этой строке, чтобы каждый раз, когдаЯ набираю «rendernow» и вхожу в консоль R. Эта строка будет выполнена.

Спасибо!

1 Ответ

2 голосов
/ 19 сентября 2019

Просто сделайте его функцией:

rendernow <- function() {
  bookdown::render_book('index.Rmd',output_format = 'all',new_session = TRUE,preview=TRUE);
  system('cmd.exe',input='taskkill /IM SumatraPDFPortable.exe');
  system('cmd.exe',input='"C:/PortableApps/SumatraPDFPortable/SumatraPDFPortable.exe" "E:/output.pdf"')
}

Затем вы можете вызвать его через rendernow() (вам нужна скобка)


Просто для удовольствия,Вот решение, в котором вам не нужны скобки:

rendernow <- structure("", class = "rendernow")
print.rendernow <- function(x, ...) {
  bookdown::render_book('index.Rmd',output_format = 'all',new_session = TRUE,preview=TRUE);
  system('cmd.exe',input='taskkill /IM SumatraPDFPortable.exe');
  system('cmd.exe',input='"C:/PortableApps/SumatraPDFPortable/SumatraPDFPortable.exe" "E:/output.pdf"')
}

Затем вы просто набираете rendernow и ваши шаги вызываются.

...