Включить изображение в пакеты R

#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. У меня отлично работает.