我正在尝试为 R 中的函数创建别名。
例如,要获取 R 中向量的长度:
length(the_vector)
#returns the length of the vector
Run Code Online (Sandbox Code Playgroud)
我想创建一个名为“len”的函数的别名:
len(the_vector)
#will also return the length of the vector
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?我想要的关键点是我希望别名能够采用原始函数可以采用的所有参数,并且别名不会替换原始函数。(即在上面的示例中,调用length(the_vector)或len(the_vector)会提供相同的结果?
@russ-hyde 的评论提供了答案的基础。包括:
\nlen <- base::length\nRun Code Online (Sandbox Code Playgroud)\n在您的.R文件中创建一个可以以各种方式使用的变量base::length。
只要“别名定义”始终作为使用它的源文件的一部分运行,这并不会降低它的可移植性。然而,在某些情况下,这会降低代码的可读性,因为协作者可能不知道如何使用它。
\n定义也有可能len会导致名称冲突。但另一方面,您可能这样做是为了避免名称冲突 \xe2\x80\x93,例如,如果您加载了一个定义了length()可用于len()标准函数的函数的包。并不是说在这种情况下base::前缀对于消除您可能想要为其别名的多个对象之间的歧义变得非常重要。
例如,dplyr重载filter函数,被广泛使用。所以如果你需要使用原来的filter时间序列的原始函数,您可能需要定义:
tsfilter <- stats::filter\nRun Code Online (Sandbox Code Playgroud)\n