我的R包使用内部变量x
。如果我加载了包(我只尝试使用devtools::load_all
),则x
列表中不会显示ls()
,但它确实有值。我怎么能避免这个?
我很好,用户可以使用myPackage::x
访问变量,但不仅仅是x
。
答案 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)
从包中导出函数myfun1
和myfun2
。通过明确定义要导出的内容,可以在不需要时避免使用该内容。