如何定义包中的哪些变量或函数被导出

时间:2012-11-18 00:24:13

标签: r namespaces export package devtools

我的R包使用内部变量x。如果我加载了包(我只尝试使用devtools::load_all),则x列表中不会显示ls(),但它确实有值。我怎么能避免这个?

我很好,用户可以使用myPackage::x访问变量,但不仅仅是x

2 个答案:

答案 0 :(得分:7)

load_all函数有一个export_all参数。

来自?load_all

  

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

因此,请尝试在export_all=FALSE来电中使用load_all

答案 1 :(得分:3)

首先尝试构建软件包,然后检查问题是否仍然存在。包的导出在NAMESPACE文件中定义。使用devtools::load_all时,未加载命名空间(请参阅here)。阅读更多相关信息并在手册Writing R extensions中构建软件包。

您可能在NAMESPACE文件中使用默认导出模式。检查一下你的包裹,看看是这样的:

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

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

export(myfun1, myfun2) 

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