Ответ 1
Используемый Defaults пакет; выбыл в 2014 году.
Обычно я использую те же функции. Мне интересно, есть ли метод, отличный от наличия нового объекта в пути, который по сути является оболочкой для функции, для установки аргументов по умолчанию. Например:
paste()
имеет аргумент sep
, установленный в пробел =" "
, мне надоело писать ,sep=""
снова и снова. Итак, есть ли способ "временно" заменить функцию моими выбранными значениями по умолчанию?
paste(...,sep="")
Можно ли это сделать через упаковку? Я иногда замечал, что некоторые пакеты заставляют другие одинаково названные функции маскироваться в глобальной среде.
В идеале, я хотел бы что-то, что можно установить в проекте по проектам в (load.r
или какой-либо другой такой начальной точке рабочего процесса)
Используемый Defaults пакет; выбыл в 2014 году.
Я лично был бы очень нерешительным, чтобы изменить поведение по умолчанию для любых часто используемых функций - особенно базовые функции R. Во-первых, это немедленно уменьшит переносимость любых скриптов или фрагментов кода, в которых вы используете переопределенные функции. Хуже того, другие пользователи R, читающие ваши сценарии, вероятно, будут либо: (a) не знать ваши личные значения для известных языковых элементов, либо (b) разочарованы необходимостью пересмотреть свои собственные ожидания для функций. Для меня также будет ощущаться дополнительная психологическая нагрузка для придания различным значениям одного и того же символа в разных условиях.
Я думаю, что лучшим решением является создание аналогично названных функций, реализующих ваши предпочтительные значения по умолчанию. Немного измененное имя будет эффективно отмечать, что это не знакомая базовая функция, не обременяя вас большим или дополнительным набором текста. Хорошим примером являются функции 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>
Затем вы можете либо собрать несколько этих функций в текстовом файле, предварительно скопировав их в свой script, либо (лучше) пакет и загрузив их с помощью вызова library()
.