2013-09-12 2 views
0

У меня есть список генов. (1024, 284, 526). У меня есть соответствующие последовательности в файле (представленном как ff). Я извлек имена (ff) в desc. файл ff может содержать гену несколько раз. Моя петля извлекает только первый хит (только 1 последовательность). Я хочу извлечь все последовательности, соответствующие моему идентификатору гена (может быть более одной последовательности). файл ff может содержать (1024, 1024, 1024, 284, 526). Я хочу, чтобы извлечь все три последовательности с идентификатором 1024. Но моя петля извлекает только первую 1024Извлечение всех совпадений из столбца в R

for(i in 1:length(geneids)){ 

    temp<- ff[match(geneids[i],as.numeric(gsub("\\_.*","", desc)))] 
    subset.seq <- c(subset.seq,temp) 
    subset.seq<-subset.seq[!sapply(subset.seq, is.null)] 
    #print(subset.seq) 
    temp1 <- names(temp) 
    temp2 <-c(sapply(temp, function(x) x)) 
    s2 <- c(s2,temp1) 
    s1 <- c(s1,temp2) 
i <- i + 1} 
+2

Это делает практически не имеет смысла вообще, как кто-то не сидит перед вашими данными. Я даже не могу понять, что здесь происходит. Попробуйте уменьшить свой вопрос до простого, минимального и воспроизводимого примера с кодом и попыткой решения. См. [Здесь] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). – thelatemail

+0

Сброс индекса 'i' не требуется. Вы должны описать, что вы делаете, и по крайней мере предложить 'str()' вывод из 'geneids' и' ff'. Еще лучше будет 'dput (head (ff))' и 'dput (head (genids))'. –

+0

Я отредактировал свой вопрос. Надеюсь, теперь это имеет смысл. Извините, что не объяснил это правильно – user2498657

ответ

0

Просто путем удаления матча я был в состоянии решить эту проблему. Матч только получает первый удар.

для (я в 1: длина (geneids)) {

temp <- c(temp,ff[geneids[i] == as.numeric(gsub("\\_.*","", desc))]) 

}

Смежные вопросы