Bra*_*sen 15 r default-value defaults
通常,我使用相同的功能设置.我想知道是否有一个方法,除了在路径中有一个新对象,实际上是函数的包装器,设置默认参数.例如:
paste()将它的sep论点设置为空间=" ",我厌倦了,sep=""一遍又一遍地写作.那么有没有办法用我选择的默认值"暂时"替换该功能?
paste(...,sep="")
Run Code Online (Sandbox Code Playgroud)
我可以通过包装来实现吗?我有时会注意到,有些软件包强制在全局环境中屏蔽其他同名函数.
理想情况下,我希望可以在项目基础上(load.r或其他一些此类工作流程起始点)设置项目
Jos*_*ien 17
我个人非常犹豫是否要更改任何常用函数的默认行为 - 特别是基本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>
Run Code Online (Sandbox Code Playgroud)
然后,您可以在文本文件中收集许多这些函数,在脚本中尽早获取它们,或者(更好地)将它们打包并通过调用加载它们library().