2013-08-02 6 views
3

패키지를로드하지 않고 Bioconductor 패키지 hypergraphhyperdraw의 함수를 사용하고 싶습니다. hyperdraw 네트에서 예를 실행하는 경우패키지를로드하지 않고 R 함수 호출

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::없이 위의 코드를 실행할 때 오류가 발생 함). 나는 단지 하나의 함수에 hyperdrawhypergraph를 사용하는 패키지를 구축, 그리고 난 오히려 내 DESCRPTION 파일에 Depends에보다 Suggests에이 패키지를 넣어 것 때문에

나는 패키지를로드하지 않으려는 이유입니다.

누구든지 해결 방법을 알고 있습니까? 이 설명 파일을

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

을 그리고는 search() 경로에 hypergraph::hyperedges를 찾는에 의존 년대에

+0

실행하려고하지 않았지만 다음을 시도해보십시오.'hyperedges <- hyperdraw ::: hyperedges' –

+0

오류가 있습니다. 편집 된 게시물 참조 – user1981275

+1

'hyperdraw'와'hypergraph '함수를 사용하는 패키지를 빌드하면 '단 하나의 기능이라 할지라도 적어도 Imports :'(''Depends :''어떤 것보다 선호되는)''로''DESCRIPTION' 파일에 넣어야합니다. 내가 아는 한이 문제를 둘러싼 방법은 없습니다. 'Suggests :'는 비 네트와 예제에서만 사용되는 패키지를위한 것이다. –

답변

5

hyperdraw이 있습니다. 개인적으로 하이퍼 뽑기에는 NAMESPACE 파일에

importFrom(hypergraph, hyperedges) 

이 포함되어야한다고 생각합니다. 현재 가장 좋은 방법은 Depends : 설명 파일에 hyperdraw를 추가하고 importFrom(hyperdraw, <whatever functions you need>)입니다. 나는 hyperdraw의 관리자에게 위와 같이 NAMESPACE를 업데이트하도록 요청했습니다. 그러면 단지 Imports: hyperdraw 일 수 있습니다. 내 생각에 당신은 혼자 일을하고 정식 종속성의 필요성을 없애기 위해 제안이나 다른 접근법을 사용하여 사용자를 좌절시키는 것 같습니다.

+0

잘 이해하면 '하이퍼 렛지'가 '하이퍼 드로'에 의해 내 보내지 않았습니까? 나는 Depends의'hyperdraw'와 Imports의'hypergraph'를 가지고 실행하고,'NAMESPACE'에서 필요한 모든 기능을로드합니다. 나는 지금 당장 그것을 지킬 것 같아. 많은 감사합니다! – user1981275