2015-04-20 2 views
5

Почему RStudio при компиляции .HTML из .Rmd пытается прочитать мой файл .RProfile?Компиляция RMarkdown с RStudio: зачем читать .RProfile?

Я имею в виду, я нажимаю кнопку «Вязать HTML», а затем на самом деле пытается выполнить все, что у меня есть, в .RProfile, загружает каждую указанную там библиотеку, а затем не пытается найти внешние файлы (у меня есть куча самообслуживания, закодированы функции, упомянутые в .RProfile, линия, как source('/Users/me/.rstudio-desktop/lib/lib.stocks.R') и т.д.

в настоящем время, я буквально двигаться .RProfile из домашней директории во время компиляции (вязания), но, вероятно, должна быть каким-то вариант, или что-то?

Буду благодарен за любое предложение :).


OS X 10.8.5, RStudio Version 0.98.1091

+1

У меня действительно нет хорошего ответа, но обход может быть 'if (interactive()) {## делать вещи для обычного сеанса r} else {делать другие вещи для неинтерактивного сеанса, knitr compiling} 'oh поместите это в ваш .rprofile, забыли эту часть – rawr

+0

Спасибо, @rawr, что работает :). Но все же интересно, почему это делает это в первую очередь ... –

+1

не уверен, что новый документ knet является новым сеансом r или если он просто создает новую среду, но в любом случае r запускается нормально, что означает, что он будет читать ваш .rprofile и делать все, что там есть. Я думал, что вы можете передать '--vanilla' в опцию chrome engine.opts, но не похоже, что это так – rawr

ответ

3

Это то, что делает .Rprofile по определению. Когда R запускается, он считывает и исполняет этот файл. RStudio запускает новый сеанс R для компиляции документов R Markdown, а сеанс R читает .Rprofile, если вы не сообщите сеансу R не делать этого (например, через R --no-init-file или R --vanilla), но в настоящее время вы не можете реально контролировать, как RStudio запускает сеанс R. Я думаю, что if (interactive()), упомянутое в @rawr, очень хорошая идея, и я тоже использую ее регулярно (я хочу, чтобы мои неинтерактивные сеансы R были «чистыми»).