R允许函数和变量具有相同的名称。我用 lm 函数测试了它但是当我创建自己的函数 k 时,我收到一个错误。有人能说出我的错误是什么
> k<-function(d){2*d}
> k(5)
[1] 10
> k
function(d){2*d}
> k<-c(1,2)
> k
[1] 1 2
> k(2)
Error: could not find function "k"
适用于 lm 功能
> lm<-2
> lm
[1] 2
> lm(airquality$Ozone~., data=airquality)
Call:
lm(formula = airquality$Ozone ~ ., data = airquality)
Coefficients:
(Intercept) Solar.R Wind Temp Month Day
-64.11632 0.05027 -3.31844 1.89579 -3.03996 0.27388
> lm
[1] 2
答案 0 :(得分:1)
正如@AdamQuek评论的那样,我认为lm <- 2
不会覆盖lm()
包中的stats
函数的原因是因为该函数存在于不同的命名空间中。定义函数k()
时,在本地名称空间中定义它,然后在本地名称空间中覆盖它。
R有一组规则,用于确定在评估变量/函数时它使用的命名空间的顺序。如果您已在本地将lm()
定义为:
lm <- function(x) { print(x) }
然后调用lm("Hello World")
确实会打印&#34; Hello World。&#34;如果您仍想使用lm()
包中的stats
版本,则可以使用该函数的完全限定名称:
stats::lm(...)
换句话说,如果您没有对该功能进行限定,R将首先搜索本地名称空间,然后它将搜索您已加载的库。
正如Alistaire评论的那样,请不要这样做。在任何编程语言中,应避免在常用包/库中的函数之后命名用户定义的函数。