Это плохая идея, пытаться использовать библиотеки packrat из одного проекта для другого проекта?

Я использую пакет в проекте, который состоит из нескольких функций (назовем это проектом "ABC"). Я использую packrat, чтобы эти функции всегда работали так, как я ожидаю. Я никогда не проводил никакого анализа в ABC - это просто набор функций - и я могу однажды упаковать их для легкого повторного использования, но это не совсем так.

Для аналитической работы я запустлю новый проект (или вообще не буду использовать какой-либо проект) и начну с получения всех файлов.R в ABC для получения доступа к моим функциям. Тем не менее, я хочу убедиться, что у меня есть правильные зависимости для функций ABC, поэтому я пытаюсь вызвать packrat (для проекта ABC!), Сначала вызвав функцию, которая выглядит следующим образом:

sketchy_init_packrat <- function() {
  wd <- setwd("~/projects/ABC") #go to ABC project directory to trick packrat
  source("packrat/init.R")
  warning("Libraries changed to match ABC libraries")
  setwd(wd) #go back to current project directory
}

Казалось, это работало до тех пор, пока новый анализ не был включен в его собственный проект. Чтобы он работал даже в проекте, я отредактировал стандартную функцию packrat / init.R, чтобы всегда использовать:

libDir <- getPackratLibDir()

вместо:

libDir <- if (exists(".rs.getProjectDirectory"))
  getPackratLibDir(.rs.getProjectDirectory())
else
  getPackratLibDir()

Я понимаю, что это не тот способ, которым был разработан packrat, но мне интересно: насколько это плохо? Это гениальный хак или я где-то готовлюсь к гибели? Напомним, в случае, если это еще не было ясно, мой сценарий использования / рабочий процесс выглядит следующим образом:

  • ABC проекта содержит кучу важных вещей, которые я хочу использовать для упаковки
  • ABC действительно должен в конечном итоге быть своим собственным пакетом. это просто набор функций. Я не делаю свой анализ в нем.
  • Я делаю много анализов с помощью ABC, все в своих собственных проектах. Я хочу убедиться, что функции ABC будут работать со всеми из них. Я не хочу заново настраивать packrat для каждого нового проекта анализа, поэтому я стараюсь просто использовать библиотеки packrat ABC.
  • Я просто вызываю свою функцию sketchy_init_packrat () каждый раз, когда создаю ABC-файлы (или, если я когда-либо упаковываю ABC, я просто вызываю функцию каждый раз, когда загружаю ее)

0 ответов

Другие вопросы по тегам