4

我想使用 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当我使用or加载两个包时,我没有收到错误(在没有andrequire的情况下运行上述代码)。hypergraph::hyperdraw::

我不想加载包的原因是因为我正在构建一个只在一个函数中使用hyperdraw和的包,hypergraph我宁愿将这些包放入而Suggests不是放入Depends我的DESCRPTION文件中。

有谁知道如何解决这个问题?

4

1 回答 1

5

hyperdraw 在它的说明文件中有这个

Depends:      R (>= 2.9.0), methods, grid, graph, hypergraph, Rgraphviz

它依赖于hypergraph::hyperedgessearch()路径上的发现。就个人而言,我认为 hyperdraw 应该包括一条线

importFrom(hypergraph, hyperedges)

在它的 NAMESPACE 文件中。目前,最好的做法是将 Depends: hyperdraw 添加到您的 DESCRIPTION 文件中,并将importFrom(hyperdraw, <whatever functions you need>). 我已经联系了 hyperdraw 的维护者,要求他们按上述方式更新 NAMESPACE;那么你就可以了Imports: hyperdraw。我认为您只是在为自己工作并通过尝试使用 Suggests 或其他方法来破坏对正式依赖项的需求而使您的用户感到沮丧。

于 2013-08-02T12:11:50.343 回答