Я создал новый проект как «пакет R» в RStudio v. 1.0.1.153. По умолчанию такой новый проект пакета R поставляется с файлом hello.R
, содержащим функцию шаблона.
hello <- function() {
print("Hello, world!")
}
к которому можно получить доступ, просто создав и перезагрузив пакет (Ctrl+Shift+B), а затем в другом сеансе R просто загрузив собранный пакет и запустив функцию:
> library(mylibrary)
> hello()
[1] "Hello, world!"
Теперь я хотел бы организовать свои функции в несколько файлов в пакете. Я добавляю новый файл methods.R
в подкаталог .\R\
пакета с другой функцией:
helloYouToo <- function() {
print("Hello you too!")
}
Однако, когда я пересобираю пакет и перезагружаю библиотеку, я не могу получить доступ к этой функции:
> library(mylibrary)
> helloYouToo()
Error in helloYouToo() : could not find function "helloYouToo"
У меня есть несколько вопросов. Как я должен
- разделить функции пакета на несколько файлов (а не только один файл
hello.R
), чтобы файлы и определенные там функции были включены в пакет, и - каков предпочтительный способ доступа также внутри пакета к таким функциям, которые определены в том же пакете, но в другом файле (например, в
methods.R
)?
devtools::load_all()
, который установил roxygen. Затем запускdevtools::load_all()
сделалhelloYouToo()
доступным в сеансе R, где я создаю пакет. Однако эта функция не стала доступной в другом сеансе R. Удивительно, но перезапуск другого сеанса R помог, и после этогоlibrary(mylibrary)
сделалhelloYouToo()
доступным. - person Heikki   schedule 28.10.2017