以下是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包中的所有数据是否自动加载到当前环境中?有人能帮我理解这背后的机制吗?
答案 0 :(得分:2)
在大多数情况下,数据包含在R包中,用于提供示例和其他非关键任务的内容。这就是为什么数据集不会自动加载到大多数软件包的环境中,您必须使用data()
命令加载它们。这是一件好事。如果用户不经常使用数据包主要提供加载数据的函数,那将浪费内存,时间和命名空间。
加载包时,只有包设计者在“NAMESPACE”文件中导出的内容可用。 “DESCRIPTION”文件有一个名为“LazyData”的字段,用于确定数据行为。顺便说一下,包中通常还有一些内部使用的函数,并且不会在NAMESPACE文件中导出。
TL; DR,包编写器确定加载包时可用的内容,并在NAMESPACE和DESCRIPTION文件中指定这些项。