繁体   English   中英

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

[英]How to edit a function with a specific environment defined in R

我正在尝试将函数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正在做什么,我也无法拨打这个电话。 任何帮助将不胜感激。

由于您只是在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)
}

假设cv.glm是让新的编辑功能,试试这个,这样cv.glm查找免费对象(如sample0在正确的地方):

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM