6

我的 R 包使用内部变量x。如果我加载包(我只尝试过使用devtools::load_all),则x不会出现在ls()列表中,但它确实有一个值。我怎样才能避免这种情况?

我很满意用户能够使用 访问变量myPackage::x,但不简单x

4

2 回答 2

9

load_all函数有一个export_all参数。

?load_all

如果为 TRUE(默认值),则导出所有对象。如果为 FALSE,则仅导出在 NAMESPACE 文件中列为导出的对象。

因此,请尝试export_all=FALSE在您的load_all通话中使用。

于 2012-11-18T00:57:26.667 回答
6

尝试先构建包,并检查问题是否仍然存在。包中的导出在NAMESPACE文件中定义。使用时devtools::load_all,不会加载命名空间(请参见此处)。在手册编写 R 扩展中阅读有关此内容的更多信息并构建一个包。

您可能在 NAMESPACE 文件中使用了默认导出模式。检查它在你的包中,如果它看起来像这样:

exportPattern("^[^\\.]")

然后包从命名空间中导出不以点开头的所有内容。因此,您要么调用它.x,要么将其更改exportPattern()为例如...

export(myfun1, myfun2) 

导出函数myfun1myfun2从包中导出。通过明确定义要导出的内容,您可以避免在不需要时出现可用的内容。

于 2012-11-18T00:30:43.623 回答