0

我正在尝试使功能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>

我想知道如何定义我的新函数的环境来查找sample0. 或者,如果差别不大,我可以用sample. 由于我既看不到sample0在做什么,所以我无法拨打这个电话。任何帮助将不胜感激。

4

2 回答 2

1

由于您只是在其中创建一个新函数,因此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)
}
于 2013-09-25T13:32:23.550 回答
1

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

environment(cv.glm) <- environment(boot::cv.glm)
于 2013-09-25T14:01:46.603 回答