SlideShare a Scribd company logo
1 of 10
Download to read offline
Организация R кода
вашего пакета
Рекомендации и общие практики
Алексей Селезнёв
Мой telegram канал
Компонентыпакета
R код Данные
Рекомендации по организации R-кода
• Организация функций в файлы
• Не используйте внутри пакета команды library() и source()
Рекомендации по организации R-кода
• library() и require() изменяют путь поиска, влияя на то, какие функции доступны из
глобальной среды. Вместо этого вы должны использовать DESCRIPTION для указания
требований вашего пакета. Это также гарантирует, что эти пакеты будут установлены при
установке вашего пакета.
• source() изменяет текущую среду, вставляя результаты выполнения кода. Для
использования добавленных функций в ваш пакет используйте load_all() или test().
Рекомендации по организации R-кода
• Организация функций в файлы
• Не используйте внутри пакета команды library() и source()
• Не изменяйте настройки R среды
Рекомендации по организации R-кода
Для того, что бы не изменяьт настройки среды пользователей пакет избегайте использования
в коде следующих функций:
• options()
• par()
• setwd()
• Sys.setenv()
• Sys.setlocale()
• set.seed()
Рекомендации по организации R-кода
При необходимости изменения опций внутри функций используйте:
• Функцию on.exit()
• Пакет withr
• with_*() - функции лучше всего подходят для выполнения небольших фрагментов кода с временно
измененным состоянием.
• local_*() - функции определяют значения опций, которые будут действоваьт до выхода из функции.
• Внутренние опции пакета объявляйте внутри функции .onLoad()
Рекомендации по организации R-кода
• Организация функций в файлы
• Не используйте внутри пакета команды library() и source()
• Не изменяйте настройки R среды
• Помните, что код пакета определённый за пределами кода его функций выполняется всего
один раз при сборке пакета, в отличие от обычных R скриптов.
СПАСИБО ЗА ВНИМАНИЕ

More Related Content

Similar to 3-r-code.pdf

"Теория и практика открытых данных" (Пермь) Часть 2: Порталы и использование ...
"Теория и практика открытых данных" (Пермь) Часть 2: Порталы и использование ..."Теория и практика открытых данных" (Пермь) Часть 2: Порталы и использование ...
"Теория и практика открытых данных" (Пермь) Часть 2: Порталы и использование ...Vitaly Vlasov
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр КолесеньIT Share
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeYehor Herasymchuk
 
Лекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderЛекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderАлександр Брич
 
Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data applianceCleverDATA
 
Репликация базы данных CUCM
Репликация базы данных CUCMРепликация базы данных CUCM
Репликация базы данных CUCMCisco Russia
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Tanya Denisyuk
 
OTUS Infrastructure as Code
OTUS Infrastructure as CodeOTUS Infrastructure as Code
OTUS Infrastructure as CodeIgor Kurochkin
 
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studioчто пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studiocorehard_by
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Fwdays
 
Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Alexey Lesovsky
 
Toad for Oracle для разработчиков – обзор, советы и скрытые возможности
Toad for Oracle для разработчиков – обзор, советы и скрытые возможностиToad for Oracle для разработчиков – обзор, советы и скрытые возможности
Toad for Oracle для разработчиков – обзор, советы и скрытые возможностиBAKOTECH
 
PostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. МолодёжноPostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. МолодёжноVladislav Bezverhiy
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Ontico
 
Тестирование серверной конфигурации
Тестирование серверной конфигурацииТестирование серверной конфигурации
Тестирование серверной конфигурацииTimur Batyrshin
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"Provectus
 

Similar to 3-r-code.pdf (20)

"Теория и практика открытых данных" (Пермь) Часть 2: Порталы и использование ...
"Теория и практика открытых данных" (Пермь) Часть 2: Порталы и использование ..."Теория и практика открытых данных" (Пермь) Часть 2: Порталы и использование ...
"Теория и практика открытых данных" (Пермь) Часть 2: Порталы и использование ...
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень
 
Масштабируемый DevOps
Масштабируемый DevOpsМасштабируемый DevOps
Масштабируемый DevOps
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
 
Лекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderЛекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, Loader
 
Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data appliance
 
SAP hands on lab_ru
SAP hands on lab_ruSAP hands on lab_ru
SAP hands on lab_ru
 
Репликация базы данных CUCM
Репликация базы данных CUCMРепликация базы данных CUCM
Репликация базы данных CUCM
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"
 
OTUS Infrastructure as Code
OTUS Infrastructure as CodeOTUS Infrastructure as Code
OTUS Infrastructure as Code
 
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studioчто пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"
 
Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.
 
TT
TTTT
TT
 
Template Toolkit – зло!?
Template Toolkit – зло!?Template Toolkit – зло!?
Template Toolkit – зло!?
 
Toad for Oracle для разработчиков – обзор, советы и скрытые возможности
Toad for Oracle для разработчиков – обзор, советы и скрытые возможностиToad for Oracle для разработчиков – обзор, советы и скрытые возможности
Toad for Oracle для разработчиков – обзор, советы и скрытые возможности
 
PostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. МолодёжноPostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. Молодёжно
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
 
Тестирование серверной конфигурации
Тестирование серверной конфигурацииТестирование серверной конфигурации
Тестирование серверной конфигурации
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
 

More from Алексей Селезнёв

Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...
Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...
Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...Алексей Селезнёв
 
Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...
Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...
Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...Алексей Селезнёв
 
Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...
Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...
Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...Алексей Селезнёв
 

More from Алексей Селезнёв (20)

Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...
Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...
Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...
 
14. мета пакет.pdf
14. мета пакет.pdf14. мета пакет.pdf
14. мета пакет.pdf
 
gargle.pdf
gargle.pdfgargle.pdf
gargle.pdf
 
12.wrapping-apis.pdf
12.wrapping-apis.pdf12.wrapping-apis.pdf
12.wrapping-apis.pdf
 
10.release_on_cran.pdf
10.release_on_cran.pdf10.release_on_cran.pdf
10.release_on_cran.pdf
 
10.website.pdf
10.website.pdf10.website.pdf
10.website.pdf
 
9-vignetts.pdf
9-vignetts.pdf9-vignetts.pdf
9-vignetts.pdf
 
function_docs.pdf
function_docs.pdffunction_docs.pdf
function_docs.pdf
 
07-testing.pdf
07-testing.pdf07-testing.pdf
07-testing.pdf
 
Add data to r package
Add data to r packageAdd data to r package
Add data to r package
 
integration_between_rstudio_and_github.pdf
integration_between_rstudio_and_github.pdfintegration_between_rstudio_and_github.pdf
integration_between_rstudio_and_github.pdf
 
create_package_1.pdf
create_package_1.pdfcreate_package_1.pdf
create_package_1.pdf
 
Бекенды dplyr
Бекенды dplyrБекенды dplyr
Бекенды dplyr
 
Пакет future
Пакет futureПакет future
Пакет future
 
Многопоточность в R
Многопоточность в RМногопоточность в R
Многопоточность в R
 
Пакет purrr
Пакет purrrПакет purrr
Пакет purrr
 
Функции семейства apply
Функции семейства applyФункции семейства apply
Функции семейства apply
 
Циклы в R
Циклы в RЦиклы в R
Циклы в R
 
Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...
Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...
Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...
 
Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...
Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...
Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...
 

3-r-code.pdf

  • 1. Организация R кода вашего пакета Рекомендации и общие практики Алексей Селезнёв
  • 4. Рекомендации по организации R-кода • Организация функций в файлы • Не используйте внутри пакета команды library() и source()
  • 5. Рекомендации по организации R-кода • library() и require() изменяют путь поиска, влияя на то, какие функции доступны из глобальной среды. Вместо этого вы должны использовать DESCRIPTION для указания требований вашего пакета. Это также гарантирует, что эти пакеты будут установлены при установке вашего пакета. • source() изменяет текущую среду, вставляя результаты выполнения кода. Для использования добавленных функций в ваш пакет используйте load_all() или test().
  • 6. Рекомендации по организации R-кода • Организация функций в файлы • Не используйте внутри пакета команды library() и source() • Не изменяйте настройки R среды
  • 7. Рекомендации по организации R-кода Для того, что бы не изменяьт настройки среды пользователей пакет избегайте использования в коде следующих функций: • options() • par() • setwd() • Sys.setenv() • Sys.setlocale() • set.seed()
  • 8. Рекомендации по организации R-кода При необходимости изменения опций внутри функций используйте: • Функцию on.exit() • Пакет withr • with_*() - функции лучше всего подходят для выполнения небольших фрагментов кода с временно измененным состоянием. • local_*() - функции определяют значения опций, которые будут действоваьт до выхода из функции. • Внутренние опции пакета объявляйте внутри функции .onLoad()
  • 9. Рекомендации по организации R-кода • Организация функций в файлы • Не используйте внутри пакета команды library() и source() • Не изменяйте настройки R среды • Помните, что код пакета определённый за пределами кода его функций выполняется всего один раз при сборке пакета, в отличие от обычных R скриптов.