考虑以下 R 代码:
local({
lm <- function(x) x^2
lm(10)
})
这暂时重写了lm
函数,但一旦执行了local
,它将“恢复正常”。 我想知道为什么同样的方法在下一个简单的示例中似乎不起作用:
require(car)
model <- lm(len ~ dose, data=ToothGrowth)
local({
vcov <- function(x) hccm(x) #robust var-cov matrix
confint(model) # confint will call vcov, but not the above one.
})
confint
函数使用vcov
函数获取系数的标准误差,其想法是通过临时覆盖vcov
来使用稳健的var-cov矩阵,而不是手动操作或更改函数。
vcov和confint都是通用函数,我不知道这是否是它未按预期工作的原因。这不是我感兴趣的具体示例; 而是概念上的教训。这是名称空间还是范围“问题”?