下面是对数据“GasolineYield”进行beta回归的R脚本片段:
library("betareg")
data("GasolineYield", package = "betareg")
gy_logit <- betareg(yield ~ batch + temp, data = GasolineYield)它运行得很好,但是如果我运行了删除了第二行的代码,它就会错误地使用消息:
Error in terms.formula(form, ...) : object 'GasolineYield' not found但是,包中的data.frame GasolineYield不是betareg吗?当我打电话给library("betareg")时,到底发生了什么?包中的所有数据不是都自动加载到当前环境中吗?有人能帮我理解这背后的机制吗?
发布于 2014-08-04 18:32:03
在大多数情况下,数据包含在R包中,目的是提供示例和其他不重要的任务。这就是为什么大多数包的数据集不会自动加载到环境中,您必须使用data()命令加载它们。这是件好事。对于那些主要提供函数来加载数据的包来说,这将是对内存、时间和名称空间的浪费,而用户并不经常使用这些函数。
加载包时,只有包设计器在“命名空间”文件中导出的内容可用。"DESCRIPTION“文件有一个名为"LazyData”的字段,它也决定数据行为。顺便说一下,包中的函数通常也是内部使用的,而不是在名称空间文件中导出的。
TL;DR,包编写器确定在加载包时哪些内容可用,并且它们在名称空间和描述文件中指定那些项。
https://stackoverflow.com/questions/25124656
复制相似问题