우선, 나는 어리석은 질문을하는 경우 사과하고 싶다. 나는 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 문제) 아래로 축소 한 후 편집 주셔서 감사합니다.
감사합니다. 네임 스페이스에는 이미'import (Biostrings)'가 있지만 DESCRIPTION 부분은 가져 오지 않았습니다. 그러나 너무 느려서'. 콜 '을 사용하는 법을 배워야 할 때입니다! 그리고 링크에 대해서도 감사드립니다. 지금부터 사용하겠습니다. –
이 문자열 연산은 적절하게 공식화되면 빠르므로 Bioc 메일 링리스트의 알고리즘에 대한 지침을 문의하십시오 (구독 필요 없음). 전문가의 조언을 구할 수 있습니다. –