如何使用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)