R:调用library()时实际加载了什么?

时间:2014-08-04 17:53:20

标签: r

以下是R脚本片段对数据进行beta回归" GasolineYield":

library("betareg")
data("GasolineYield", package = "betareg")
gy_logit <- betareg(yield ~ batch + temp, data = GasolineYield)

它工作正常,但是如果我删除了第二行的代码,那么它会出错:

Error in terms.formula(form, ...) : object 'GasolineYield' not found

但不是包GasolineYield中的data.frame betareg?当我致电library("betareg")时,实际发生了什么? Aren包中的所有数据是否自动加载到当前环境中?有人能帮我理解这背后的机制吗?

1 个答案:

答案 0 :(得分:2)

在大多数情况下,数据包含在R包中,用于提供示例和其他非关键任务的内容。这就是为什么数据集不会自动加载到大多数软件包的环境中,您必须使用data()命令加载它们。这是一件好事。如果用户不经常使用数据包主要提供加载数据的函数,那将浪费内存,时间和命名空间。

加载包时,只有包设计者在“NAMESPACE”文件中导出的内容可用。 “DESCRIPTION”文件有一个名为“LazyData”的字段,用于确定数据行为。顺便说一下,包中通常还有一些内部使用的函数,并且不会在NAMESPACE文件中导出。

TL; DR,包编写器确定加载包时可用的内容,并在NAMESPACE和DESCRIPTION文件中指定这些项。