通常,我使用相同的功能设置。我想知道除了在路径中拥有一个本质上是函数包装器的新对象之外,是否还有一种方法来设置默认参数。例如:
paste()
有它的sep
参数设置为空格=" "
,我写累了,sep=""
一遍又一遍。那么有没有办法“暂时”用我选择的默认值替换该函数?
paste(...,sep="")
我可以通过包装来实现这一点吗?我有时注意到,某些包会强制在全局环境中屏蔽其他同名的函数。
理想情况下,我想要一些可以在(load.r
或其他一些此类工作流程起点)
我个人会very犹豫是否要更改任何常用函数的默认行为——尤其是基本 R 函数。一方面,它将立即降低使用重新定义的函数的任何脚本或代码片段的可移植性。更糟糕的是,阅读您的脚本的其他 R 用户可能会:(a) 不知道您对众所周知的语言元素的私人含义,或者 (b) 因必须重新设定自己对函数的期望而感到沮丧。对我来说,在不同的环境中为同一个符号赋予不同的含义也会增加精神负担。
我认为一个much更好的解决方案是创建类似名称的函数来实现您首选的默认值。稍微修改一下名称将有效地标记这不是熟悉的基本函数,而不会给您带来太多或任何额外的输入负担。一个很好的例子是paste0()
and 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()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)