我正在努力使函数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
正在做什么,我也无法拨打这个电话。
任何帮助将不胜感激。
答案 0 :(得分:1)
由于您只是在GlobalEnvironment
中创建一个新函数,它不知道在哪里可以找到未从原始函数的pacakge导出的函数。您只需要使用:::
运算符明确告诉它在哪里找到它们。所以例如
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)
}
答案 1 :(得分:1)
假设cv.glm
是您新编辑的功能,请尝试此操作,以便cv.glm
在正确的位置查找免费对象(例如sample0
):
environment(cv.glm) <- environment(boot::cv.glm)