2017-01-19 7 views
0

오랜 정책의 문제로, 나는 현재 스코프로 이름을 가져 오지 않고 - 다른 패키지에 정의 된 항목을 참조 할 때 - 정규화 된 이름.현재 스코어를 오염시키는 것을 피하는 방법 (`library (...)와 함께)

아래 스크립트는 정규화 된 이름을 사용하는 것으로 충분하지 않음을 보여줍니다. 오류가있는 경우 하나의 해제 주석 주석 아웃 사라져

#!/usr/bin/env Rscript 

set.seed(0) 

x <- local({ 
     x0 <- matrix(rnbinom(80, size = 5, mu = 10), nrow = 20) 
     `rownames<-`(rbind(0, c(0, 0, 2, 2), x0), 
         paste("Tag", 1:(nrow(x0) + 2), sep = ".")) 
    }) 

y <- edgeR::DGEList(counts = x, 
        group = rep(1:2, each = 2), 
        lib.size = 1001:1004) 

## library(edgeR) 

y[1, 1] 

스크립트는

Error in y[1, 1] : incorrect number of dimensions 
Execution halted 
스크립트의 유일한 범죄 어딘가에 실패한 문 앞에 선 library(edgeR)을 포함 있지 않는 것으로 보인다

실패 선.

부두입니다. imho.

현재 범위를 오염시키지 않고 오류를 피할 수있는 방법이 있습니까 library(edgeR)?

+2

모듈 패키지를 살펴보십시오. –

+0

@ G.Grothendieck : 제안을 주셔서 감사합니다. 그러나 '모듈'웹 사이트를 신속하게 훑어 본 후에이 패키지가 어떻게 도움이되는지는 분명하지 않습니다. 좀 더 정교하게 신경 쓰시겠습니까? – kjo

답변

2

edgeR 패키지를로드하지 않으려면 y[1, 1]을 실행하는 데 필요한 [.DGEList 메서드를로드하지 않아야합니다. 당신이 edgeR 라이브러리를로드하지 않으려면, 당신은 직접 추출 함수를 호출해야합니다 : 당신이 완전한 구문을 좋아하지 않는 경우에

edgeR::`[.DGEList`(y, 1, 1) 

, 당신은 당신이

에 필요한 방법으로 가져올 수
`[.DGEList` <- edgeR::`[.DGEList` 

그런 다음 y[1, 1]이 예상대로 작동합니다. 하지만 이것은 또 다른 형태의 오염이며 일반적인 솔루션으로 권장할만한 것은 아닙니다.

+0

감사! BTW, 나는 명시 적이기 때문에'\'[.DGEList \' kjo