2013-09-06 6 views
1

우선, 나는 어리석은 질문을하는 경우 사과하고 싶다. 나는 2 일 동안 R로 일했지만 그 일은 내 일 때문에해야한다.R 패키지, Biostring Views에 기능을 적용하려고합니까?

저는 함수를 적용하려고합니다 (기본 쌍의 이름으로 색인 된 행렬의 산술을 계산합니다). Biostrings을 사용하여 큰 DNA 시퀀스를 관리하고 있습니다. 나는이 서열을 147 bp의 더 짧은 서열로 "창으로 내야"하고이 짧은 서열에 기능을 적용해야한다.

그래서 여기 내 코드가 어떻게 보일지의 MWE입니다 (이 코드는 내 그렇게 잘못 될 수도, 그리고 나는 아직도 = 및 < 사이의 차이를 이해하지 않는다 -) : 이제

MyMWEf <- function(seq, MAT){ 
    #MAT has colnames and rownames "BPs", for example "AG", "TA", etc. 
    BPs = Views(seq, start = 1:(length(seq)-1), width = 2) 
    BPs = unlist(lapply(BPs,toString)) 
    #With this I get a list of bps ("AG" "TA" etc.) 
    AVGs = AVG[BPs, ] 
    res=sum(AVGs) 
} 

MyMWE <- function(seq, MAT){ 
    seq <- Biostrings::DNAString(seq) 
    windows <- Views(seq, start = 1:(length(seq)-146), width = 147) 
    res = unlist(lapply(windows, MyMWEf, MAT)) 
} 

을 나는이와 패키지를 빌드하고 설치하고 실행하면, 그것은 나에게 다음과 같은 오류를 제공합니다

error in evaluating the argument 'x' in selecting a method for function 'unlist': Error in as.list.default(X) : 
No method to coerce this S4 class to a vector 

그래서 내가 디버깅을 시작하고, 문제가 실제로 lapply에 오는 것을 발견 : 그것은 error during wrapup을 말한다. 더 구체적으로는 오류가 as.list(windows)을 시도 할 때 발생하는 것으로 보입니다. 그러나, 내가 콘솔에서 콘솔을 실행해도 오류는 발생하지 않습니다! 나는 예를 들어 lapply(windows,length) 또는 심지어 lapply(windows,MyMWEf,MAT)과 같은 문제없이 아무런 문제없이 lapply을 쓸 수 있으며 콘솔 안에 MyMWEf 함수를 정의하면 모든 것이 잘 동작한다. 또한 콘솔에`as.list (windows) '라고 쓰면 작동한다.

누구나 내가 뭘 잘못하고 있는지 통찰력을 줄 수 있다면 나는 그것을 매우 고맙게 생각할 것이다.

조금 (as.list 문제) 아래로 축소 한 후 편집 주셔서 감사합니다.

답변

0

표시되는 증상은 대화 형 세션에서는 작동하지만 패키지 NAMESPACE에서는 정상적으로 작동하지 않는다는 증상입니다.

이 때문에 보통 패키지 네임 스페이스 파일의 오류이며, 특히 당신이 당신의 패키지 라인

Imports: Biostrings 

의 설명 부분과의 라인을 따라 네임 스페이스 파일 무언가가 필요 당신이 패키지를 많이 사용하는 경우

importMethodsFrom(Biostrings, as.list) 

, 그것은

import(Biostrings) 
대신이 더 적합 할 수 있습니다

Biocondcutor 메일 링리스트는 Biostrings에 대한 후속 질문을 게시하기에 적합한 장소입니다.

+0

감사합니다. 네임 스페이스에는 이미'import (Biostrings)'가 있지만 DESCRIPTION 부분은 가져 오지 않았습니다. 그러나 너무 느려서'. 콜 '을 사용하는 법을 배워야 할 때입니다! 그리고 링크에 대해서도 감사드립니다. 지금부터 사용하겠습니다. –

+0

이 문자열 연산은 적절하게 공식화되면 빠르므로 Bioc 메일 링리스트의 알고리즘에 대한 지침을 문의하십시오 (구독 필요 없음). 전문가의 조언을 구할 수 있습니다. –