如何删除R中已保存的.rda对象中的名称空间引用?
我有一个包含一个数据对象(.rda)的包,它最初是由另一个包创建的,似乎有一个对其原始名称空间的引用。
load()
的手册页说明:
对象可以通过引用命名空间来保存,通常作为函数或公式的环境的一部分。 从R 3.1.0开始,即使命名空间不可用,也可以加载这些对象:它被替换为带有警告的全局环境的引用。 该警告用这样的参考识别第一个对象(但可能有多个)。
我需要删除这个引用,因为它会在包检查期间引发警告。 我试过加载并重新保存对象,但没有看到如何修改名称空间。 有什么建议么?
编辑:
该对象是一个“网络”。 我还没有想出另一个例子,但应该能够重现相同的例子:
install.packages('ndtv')
library(ndtv)
loadedNamespaces()
[1] "animation" "base" "datasets" "graphics"
[5] "grDevices" "methods" "ndtv" "network"
[9] "networkDynamic" "sna" "statnet.common" "stats"
[13] "tools" "utils"
data(msm.sim)
loadedNamespaces()
[1] "animation" "base" "datasets" "ergm"
[5] "graphics" "grDevices" "methods" "ndtv"
[9] "network" "networkDynamic" "sna" "statnet.common"
[13] "stats" "tools" "utils"
注意添加'ergm'命名空间
我想我已经通过创建一个新的网络对象解决了这个问题,并将msm.sim
对象的每个命名元素复制到新对象上,然后将新对象重新保存在旧对象上。 也许命名空间附件是由附加到msm.sim
的函数触发的,当它由ergm包生成时,所以在调用对象的edit()
时我没有看到它? 一定会有更好的办法。 我仍然认为,如果名称空间触发元素可以附加到对象上,应该有函数列出它们是什么以及它们附着在哪里。
上一篇: How to remove a namespace reference in a saved .rda object in R?
下一篇: Creating and serializing / saving global variable from within a NAMESPACE in R