使用insertSource在系统范围内修改R函数

时间:2018-06-24 21:26:07

标签: r

我想根据作者的建议修改“猿”包的“ ace”功能。我将修改后的函数写到了“ ace2.r”,并想用我的函数替换软件包中的标准“ ace”函数(见此处:How to edit and debug R library sources):

insertSource("ace2.r", package= "ape", functions="ace")

但我明白了

Warning message: In insertSource("ace2.r", package = "ape", functions = "ace"): cannot insert these (not found in source): "ace"

我检查了?insertSource,但没有得到应为“功能”提供的信息

1 个答案:

答案 0 :(得分:0)

修改功能有点复杂且冒险,您可以使用新名称创建修改后的版本。假设函数为 substr

在控制台中写入 substr ,然后按Enter,将返回

> substr
function (x, start, stop) 
{
if (!is.character(x)) 
x <- as.character(x)
.Internal(substr(x, as.integer(start), as.integer(stop)))
}
<bytecode: 0x000000000d7d4ec0>
<environment: namespace:base>

然后为您自己的版本分配一个新名称( my_substr

my_substr <- function (x, start, stop) 
{
if (!is.character(x)) 
x <- as.character(x)
.Internal(substr(x, as.integer(start), as.integer(stop)+1))
}