摘自"统计学习导论",第.3.6.2,我得到以下代码(执行线性回归):

library(MASS)
library(ISLR2)
lm.fit =lm(medv~lstat ,data=Boston )

我的理解是,lm.fit是线性模型的基本fitter函数.为什么我要用lm()的结果覆盖它?然后lm.fit不再是一个函数,而是一个列表.我不应该把lm()的结果赋给一个新变量吗?

推荐答案

正如建议的那样,发布作为答案.

最佳实践not是覆盖已加载包的命名空间中定义的变量,以避免不必要的副作用.在这方面,var1lm2等形式的变量名通常是安全的 Select .哈德利·威克姆(HadleyWickham)的《Style Guide》推荐了var_1lm_2个下划线,但就个人而言,如果你在ESS中使用"智能下划线"(将_改为<-),这些下划线可能会有点令人厌烦.

我们可以在分配变量之前进行判断,例如:.

(if (!exists("lm.fit")) lm.fit  <- lm(medv ~ lstat, data=ISLR2::Boston))

给出NULL,表示lm.fit已经存在.

分配lm.fit并不是一个主要的攻击,因为lm仍然像预期的那样工作,正如我们可以看到的那样,函数lm.fit也一样工作:

lm.fit  <- lm(medv ~ lstat, data=ISLR2::Boston)
lm(medv ~ lstat, data=ISLR2::Boston)
### Manually adding an intercept term below to get the same results
lm.fit(x=cbind(rep(1, length(Boston$lstat)), Boston$lstat),
   y=Boston$medv)$coefficients

也就是说,当调用lm.fit时,它仍然是一个函数,就像它在包stats的命名空间中定义的那样,如下所示:

getAnywhere(lm.fit)

2 differing objects matching ‘lm.fit’ were found
in the following places
  .GlobalEnv
  package:stats
  namespace:stats
Use [] to view one of them

R相关问答推荐

R:如何自动化变量创建过程,其中我需要基于ifelse()为现有变量的每个级别创建一个单独的变量

如何判断某列中由某些行组成的百分比

如果列中存在相同的字符串,则对行值进行总和

更改绘图上的x轴断点,而不影响风险?

更改编号列表的 colored颜色

当两个图层映射到相同的美学时,隐藏一个图层的图例值

将向量组合到一个数据集中,并相应地命名行

汇总数据表中两个特定列条目的值

有效识别长载体中的高/低命中

`lazy_dt`不支持`dplyr/across`?

使用Scale_*_MANUAL时在图例中保留未使用的系数级别

您是否可以使用facet_rap设置一个较低的限制来对ggmap上的比例中断进行zoom ?

Ggplot2中geom_tile的动态zoom

有没有一种方法可以同时对rhandsontable进行排序和从rhandsontable中删除?

删除数据帧中特定行号之间的每第三行和第四行

为R中的16组参数生成10000个样本的有效方法是什么?

有没有办法通过str_Detect()或其他字符串匹配函数来连接两个长度不等的数据帧?

随机将数据帧中特定列上的某些行设置为NA

如何修改GT表中组名行的 colored颜色 ?

使用显式二元谓词子集化sfc对象时出错