我想使用Bioconductor包hypergraph
和hyperdraw
中的函数而不加载包。从hyperdraw
插图
dh1 <- hypergraph::DirectedHyperedge("A", "B", "R1")
dh2 <- hypergraph::DirectedHyperedge(c("A", "B"), c("C", "D"), "R2")
hg <- hypergraph::Hypergraph(LETTERS[1:5], list(dh1, dh2))
hgbph <- hyperdraw::graphBPH(hg)
我收到错误:
Error in hyperdraw::graphBPH(hg) : could not find function "hyperedges"
如果我尝试加载hyperedges
:
hyperedges <- hyperdraw:::hyperedges
我收到错误
Error in get(name, envir = asNamespace(pkg), inherits = FALSE) :
object 'hyperedges' not found
当我使用library
或require
加载这两个软件包时,我没有收到任何错误(在没有hypergraph::
和hyperdraw::
的情况下运行上述代码)。
我不想加载软件包的原因是我正在构建一个仅在一个函数中使用hyperdraw
和hypergraph
的软件包,而我宁愿将这些软件包放入{{1而不是Suggests
文件中的Depends
。
有没有人知道如何解决这个问题?
答案 0 :(得分:5)
hyperdraw在它的描述文件中有这个
Depends: R (>= 2.9.0), methods, grid, graph, hypergraph, Rgraphviz
并且它依赖于在hypergraph::hyperedges
路径上找到search()
。就个人而言,我认为hyperdraw应该包含一行
importFrom(hypergraph, hyperedges)
在它的NAMESPACE文件中。目前,最好的办法是将Depends:hyperdraw添加到您的DESCRIPTION文件和importFrom(hyperdraw, <whatever functions you need>)
。我已经联系了hyperdraw的维护者,要求他们更新NAMESPACE,如上所述;那你只能Imports: hyperdraw
。我认为你只是通过尝试使用建议或其他方法来破坏对正式依赖的需求,为自己工作并使用户感到沮丧。