如何使用R中定义的特定环境编辑函数

如何使用R中定义的特定环境编辑函数,r,function,R,Function,我正在尝试调整功能cv.glm(软件包boot)以满足我的特定需求;具体来说,我的预测变量需要根据每个排列中使用的样本进行轻微调整。这似乎足够简单,可以在函数中添加几行,然后将其重命名为我自己的函数(“cv.glm2”)。不幸的是,在我的版本中不再找到一个内部函数sample0: Error in cv.glm2(DF, glm1, K = 2) : could not find function "sample0" 这似乎与cv.glm()函数中定义的环境有关。通过打印出函数,我看到最后两

我正在尝试调整功能
cv.glm
(软件包
boot
)以满足我的特定需求;具体来说,我的预测变量需要根据每个排列中使用的样本进行轻微调整。这似乎足够简单,可以在函数中添加几行,然后将其重命名为我自己的函数(“
cv.glm2
”)。不幸的是,在我的版本中不再找到一个内部函数
sample0

 Error in cv.glm2(DF, glm1, K = 2) : could not find function "sample0"
这似乎与
cv.glm()
函数中定义的环境有关。通过打印出函数,我看到最后两行是:

cv.glm
...
<bytecode: 0x0000000010117220>
<environment: namespace:boot>
cv.glm
...
我想知道如何定义新函数的环境以查找
sample0
。或者,如果差别不大,我可以用
sample
代替。由于我既看不到sample0正在做什么,因此无法拨打此电话。
任何帮助都将不胜感激

由于您只是在
GlobalEnvironment
中创建一个新函数,它不知道在哪里可以找到未从原始函数包导出的函数。您只需要使用
操作符明确地告诉它在哪里可以找到它们。例如

cv.glm2 <-
function (data, glmfit, cost = function(y, yhat) mean((y - yhat)^2), 
    K = n) 
{
    #  // Some other code here //  #

    #  Tell it which package the unexported  function resides in
    s <- boot:::sample0(rep(1L:K, f), n)
}

cv.glm2假设
cv.glm
是您新编辑的函数,然后尝试此操作,以便
cv.glm
在正确的位置查找自由对象(例如
sample0
):

environment(cv.glm) <- environment(boot::cv.glm)

environment(cv.glm)如果函数未导出,则需要三个冒号:
boot::sample0
。非常好!多亏了你们两位,我正要问关于出口的错误。干杯还有一种简单的方法可以查看
sample0
函数中发生的事情吗?当然<代码>getAnywhere(样本0)