Ранее я задавал вопрос
Создание комбинаций кодонов ДНК в R
, из которых я сейчас пытаюсь реализовать более быструю версию, но у меня неожиданный проблема.
Моя попытка
library(ape)
codon.tbl <- "vertebrate mitochondrial"
pos1 <- c("a", "c", "g", "t")
pos2 <- c("a", "c", "g", "t")
pos3 <- c("a", "c", "g", "t")
codons <- expand.grid(pos1, pos2, pos3)
codons <- paste0(codons$Var1, codons$Var2, codons$Var3)
# Exclude stop codons
if (codon.tbl == "standard") {
stop.codons <- c("taa", "tag", "tga")
} else if (codon.tbl == "vertebrate mitochondrial") {
stop.codons <- c("aga", "agg", "taa", "tag")
} else {
# invertebrate mitochondrial
stop.codons <- c("taa", "tag")
}
codons <- codons[which(codons != stop.codons)] # problematic line
Строка кода, приведенная выше, должна содержать только 60 элементов, поскольку, когда codon.tbl == "митохондриальный позвоночный", 4 возможных стоп-кодона; вместо этого «кодоны» содержат 62 элемента.
Когда я запускаю код, «кодоны» по-прежнему содержат строки «agg» и «taa»; только "aga" и "tag" были удалены.
Я не уверен, почему это происходит