#r #rscript
#r #rscript
Вопрос:
Хорошо, итак, мне нравится использовать R-проекты в Rstudio для сценариев и данных, с которыми я работаю. Однако, допустим, я хочу поместить эти скрипты в другой каталог … R не обнаруживает файл .Rproj, если скрипт не вызывается из каталога, в котором он размещен. Есть ли какой-либо способ получить исходный код R-скрипта, который является частью R-проекта, из другого каталога?
Это актуально, поскольку у меня есть система, в которой я выполняю анализ и создаю цифры в одном каталоге, но затем создаю документы LaTeX, которые используют эти цифры в другом каталоге. Мне нравится иметь возможность использовать исходные коды R-скриптов, которые создают рисунки, и сохранять их в каталоге, где я пишу на LaTeX.
Вот MRE:
Поскольку проект R уже создан в каталоге (выполняется через Rstudio) … давайте назовем его ~/test .
Создайте некоторые данные:
a <- 1:10
dat <- data.frame(a = a, b = a rnorm(length(a), 10, 2))
save(dat, file = "test.RData")
Поместите следующий скрипт в ~/test. Давайте назовем это test.R.
load("test.RData")
pdf(file = "plot.pdf")
plot(b ~ a, data = dat)
dev.off()
Отлично работает, не так ли? Но если мы попробуем выполнить следующее из любого другого каталога, R не сможет этого понять.
cd ~
Rscript ~/test/test.R
Какие-нибудь продуманные решения? Я полагаю, что это достаточно просто setwd()
использовать в скрипте, из которого я получаю исходный скрипт, но это сводит на нет всю цель использования R-проектов.
Комментарии:
1. Я не уверен, что понимаю.
Rscript
не имеет ничего общего с RStudio или проектами RStudio. Если вы вызываете скрипт из определенного каталога, если не указано иное, этот каталог будет корневым каталогом, в котором он ищет файлы (поскольку вы не указываете абсолютные пути). В вашем случае вы вызываетеRscript
из своего домашнего каталога, так что именно здесь R ищет"test.RData"
.2. Извините, следовало прояснить это в вопросе. Да, я вызываю скрипт из домашнего каталога, но скрипт находится в ~/test, и данные загружаются изнутри скрипта. Возможно, я просто запутался в том, что такое проект R и как его следует использовать
3. Да, я понимаю, что вы сделали, и, как я объясняю в своем первом комментарии, поведение соответствует ожиданиям. Проект RStudio не имеет ничего общего с самим R. Если вы настроите проект RStudio, он (среди прочего) создаст метафайл с параметрами, специфичными для RStudio. Как вы уже указывали, вам нужно использовать
setwd
для указания рабочего каталога , если вы вызываете R (илиRscript
) из другого каталога.
Ответ №1:
Вы могли бы использовать setwd("~/test/")
в начале сценария и при необходимости изменить его позже.
Комментарии:
1. Да, я включил это в конец исходного вопроса.