Написать таблицу в "для цикла" (R)
У меня есть много последовательностей в текстовом файле. Я импортирую эти последовательности, используя функцию "read.fasta". Я использую "for loop", чтобы создать таблицу частоты нуклеотидов для каждой последовательности, и использую "write.table", чтобы получить вывод. Но он создает файл для каждой последовательности (многие выходные файлы и каждый файл имеют таблицу последовательности). Я ищу команды для создания файла, который имеет все таблицы.
примечание: "mydata.txt" - это файл, содержащий много последовательностей в формате fasta
file=read.fasta(file="mydata")
for (i in seq_along(file))
{
NucleotidesFrequency=table(file[[i]])
print(NucleotidesFrequency)
write.table(NucleotidesFrequency, paste(i, (".txt"), sep=""),sep="\t")
}
1 ответ
Решение
Вы могли бы попробовать rbind
(увидеть ?rbind
для деталей):
## create example data
set.seed(1)
s <- list(sample(LETTERS[1:4], size=20, replace=T), sample(LETTERS[1:4], size=20, replace=T))
## call table for each item in the list
l <- lapply(s, table)
l
#[[1]]
#A B C D
#4 5 5 6
#[[2]]
#A B C D
#5 7 4 4
## using rbind to create a matrix
d <- do.call(rbind, l)
d
# A B C D
#[1,] 4 5 5 6
#[2,] 5 7 4 4
## write it into a file
write.table(d, "file.txt")