#r #package
#r #пакет
Вопрос:
Я пытаюсь создать пакет для своей компании, в котором были бы некоторые пользовательские цветовые палитры и логотип нашей компании. На данный момент я успешно создал пакет, содержащий все необходимые цветовые палитры, однако я застрял при попытке включить логотип.
Я думал, что после загрузки логотипа в R это просто еще один фрейм данных, и я мог бы просто использовать эту функцию для его сохранения:
logo <- image_read("logo.png")
logo <- image_scale(logo, "50")
usethis::use_data(logo,company_logo)
Однако я столкнулся с ошибкой:
Ошибка: указатель на изображение недоступен. Вы не можете сохранять или кэшировать объекты изображения между сеансами R.
Теперь я не уверен, будет ли моя цель возможной?
Комментарии:
1. Попробуйте сохранить изображения в
man/figures
неdata
2. Я не уверен, как я должен это делать? Обратите внимание, что я пытаюсь найти способ включить функцию для загрузки логотипа при вызове, а не использовать изображение в файле справки.
Ответ №1:
Вы можете установить дополнительные файлы в подкаталоги под inst
в вашем пакете. Например, создайте каталог inst/logos
в своем пакете и поместите туда свои логотипы. При установке пакета создается каталог logos
в каталоге вашего пакета. Затем вы можете использовать system.file
для доступа к изображениям после установки пакета. Вы могли бы создать функцию в своем пакете, которая сделает это за вас. Например:
company_logo <- function() {
magick::image_read(system.file("logos/logo.png", "MyCompanyPackage"))
}
Причина, по которой сохранение результата image_read
использования save
не работает, заключается в том, что результат, возвращаемый image_read
, является указателем на некоторую память, выделенную пакетом. При сохранении результата сохраняется только указатель, а не данные, на которые указывают.
Комментарии:
1. У меня отлично работает.