Как я уже упоминал в комментариях, я считаю, что лучшее решение здесь - просто поместить ваш код в пакет.Вы кажетесь нерешительным или запуганным этим заданием, но это действительно настолько просто, насколько это возможно, что я кратко продемонстрирую для вас.
Предположим, у вас есть функция
example_function <- function(x) {
return(x * 2)
}
, которую вы хотите/ нужно распространять, желательно с какой-то документацией.Вот как вы можете сделать это в пакете R относительно безболезненно.Мы добавим комментарии к документации в стиле Roxygen:
#' Example function
#'
#' This is just an example function that multiplies its argument by two.
#'
#' @param x A numeric vector
#'
#' @return A numeric vector equal to \\code{x} multiplied by two.
#' @export
example_function <- function(x) {
return(x * 2)
}
Затем мы позволим devtools
сделать для нас часть тяжелой работы.Сначала мы используем его для настройки необходимой структуры пакета:
pkg_path <- "/tmp/examplePackage" # Wherever you want your package to be on your machine
devtools::create(pkg_path, rstudio = FALSE)
Затем мы помещаем файл с нашей вышеописанной функцией в подкаталог R/
папки пакета devtools
, созданной для нас (в моемЕсли код теперь находится в файле /tmp/examplePackage/R/example_function.R
.
Тогда мы можем просто запустить команду
devtools::document(pkg_path)
# Updating examplePackage documentation
# Loading examplePackage
# Writing NAMESPACE
# Writing example_function.Rd
И devtools
+ roxygen2
позаботитсявсей магии документации для нас. Теперь вы можете devtools::install()
сделать файлы справки доступными для R:
devtools::install(pkg_path)
?examplePackage::example_function
или build_manual
чтобы создать красивое руководство в формате PDF, которое вы упомянули:
devtools::build_manual(pkg_path)
# Hmm ... looks like a package
# Creating pdf output from LaTeX ...
# Saving output to ‘/tmp/examplePackage_0.0.0.9000.pdf’ ...
# Done