R函数调用没有加载包

时间:2013-08-02 11:30:44

标签: r package function-calls bioconductor

我想使用Bioconductor包hypergraphhyperdraw中的函数而不加载包。从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

当我使用libraryrequire加载这两个软件包时,我没有收到任何错误(在没有hypergraph::hyperdraw::的情况下运行上述代码)。

我不想加载软件包的原因是我正在构建一个仅在一个函数中使用hyperdrawhypergraph的软件包,而我宁愿将这些软件包放入{{1而不是Suggests文件中的Depends

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

1 个答案:

答案 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。我认为你只是通过尝试使用建议或其他方法来破坏对正式依赖的需求,为自己工作并使用户感到沮丧。