Установка функций по умолчанию R на основе проекта - PullRequest
15 голосов
/ 31 января 2012

Обычно я использую те же настройки функций.Мне интересно, есть ли метод, отличный от наличия нового объекта в пути, который по сути является оберткой для функции, для установки аргументов по умолчанию.Например:

paste() имеет аргумент sep, установленный в пробел =" ", я устал писать ,sep="" снова и снова.Так есть ли способ «временно» заменить функцию выбранными по умолчанию?

paste(...,sep="") 

Можно ли сделать это с помощью упаковки?Я иногда замечал, что некоторые пакеты заставляют маскировать другие функции с одинаковыми именами в глобальной среде.

В идеале мне бы хотелось, чтобы что-то можно было установить для проекта в зависимости от проекта в (load.r или какой-либо другой такой начальной точке рабочего процесса)

Ответы [ 2 ]

17 голосов
/ 31 января 2012

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

Я думаю, что намного лучшее решение состоит в создании функций с аналогичными именами, реализующих ваши предпочтительные значения по умолчанию. Слегка измененное имя фактически отметит, что это не знакомая базовая функция, не обременяя вас большим или дополнительным набором текста. Хорошим примером являются функции paste0() и cat0(), которые включены в пакет gsubfn. (Очевидно, что вы и я не единственные, кого раздражает (часто) раздражение по умолчанию paste() sep!):

library(gsubfn)

paste0
# function (..., sep = "") 
# paste(..., sep = sep)
# <environment: namespace:gsubfn>

cat0
# function (..., sep = "") 
# cat(..., sep = sep)
# <environment: namespace:gsubfn>

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

12 голосов
/ 31 января 2012

Пакет По умолчанию , используемый для этого;вышел на пенсию в 2014 году.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...