Где в R я постоянно храню свои пользовательские функции?

У меня есть несколько пользовательских функций, которые я часто использую в R. Вместо того, чтобы получить этот файл (или части этого) в каждом сценарии, там некоторый способ добавить, что это к основе R регистрирует таким образом, что они всегда доступны, когда я использую R?

29
задан Maiasaura 8 July 2010 в 18:30
поделиться

4 ответа

Да, создайте пакет. Существует множество руководств, а также Writing R Extensions руководство, которое поставляется вместе с вашей копией R.

Поначалу это может показаться слишком большой работой, но впоследствии вы будете рады, что сделали это.

PS Затем вы можете загрузить этот пакет из ~/.Rprofile. Для действительно короткого кода, вы также можете определить его там.

23
ответ дан 28 November 2019 в 01:33
поделиться

Другой вариант - использовать файл .Rprofile . Подробности можно прочитать в ? Запуск . По сути, идея состоит в том, что:

... файл с именем «.Rprofile» ищется в текущем каталоге или в домашнем каталоге пользователя (именно в таком порядке). Файл профиля пользователя поступил в рабочую область.

Вы можете прочитать здесь о том, сколько людей используют эту функцию.

9
ответ дан 28 November 2019 в 01:33
поделиться

Пакет может быть излишеством для нескольких полезных функций. Я бы сказал, что нет ничего плохого в явном source()включении их по мере необходимости - по крайней мере, это явно, так что если вы пошлете кому-то свой код, вы не забудете включить в него другие скрипты.

17
ответ дан 28 November 2019 в 01:33
поделиться

Вы также можете посмотреть на пакет mvbutils: он позволяет вам настроить иерархический набор «задач» (папки с файлами рабочей области «.RData» в них), чтобы вы всегда могли посмотреть, что находится в родительских задачах (т.е. предки находятся в пути search ()). Таким образом, вы можете поместить свои пользовательские функции в «стартовую задачу», где вы всегда запускаете R; а затем вы переходите к любой требуемой для конкретного проекта задаче, чтобы избежать загроможденных рабочих пространств, но вы по-прежнему сможете использовать (и редактировать) свои пользовательские функции, потому что начальная задача всегда является наследственной. Объекты (включая функции) сохраняются в файлах ".RData" и, таким образом, загружаются / сохраняются автоматически, но есть отдельные средства резервного копирования текста для функций.

В R существует множество различных способов работы, и нет универсального решения, подходящего для всех.Обзор тоже найти непросто! Говоря только о себе:

  • Я не сторонник необходимости «получать» все каждый раз; во-первых, он просто не работает с большими наборами данных и / или результатами прогонов модели.

  • Я думаю, что пакеты сложно создавать и поддерживать; есть действительно значительные накладные расходы. После первых 5 пакетов, которые вы напишете, это станет немного проще, если вы будете делать это хотя бы раз в неделю, чтобы вы не забыли, как, но на самом деле ...

На самом деле, у 'mvbutils' также есть куча инструментов для облегчения создания и (особенно) обслуживания пакетов, предназначенных для плавного взаимодействия с системой иерархии задач. Я все время использую и редактирую свои собственные пакеты (включая редактирование самого mvbutils); но если бы не инструменты из «mvbutils», я бы скрежетал зубами от разочарования большую часть дней недели.

1
ответ дан 28 November 2019 в 01:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: