Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将.fasta文件中的所有单个字母拆分为矩阵中每列一个字母_R_Bioinformatics_Fasta - Fatal编程技术网

R 将.fasta文件中的所有单个字母拆分为矩阵中每列一个字母

R 将.fasta文件中的所有单个字母拆分为矩阵中每列一个字母,r,bioinformatics,fasta,R,Bioinformatics,Fasta,我想在R中执行以下操作 我有一个.fasta文件,包含大约90个DNA基因序列,如下所示: >3 dna:chromosome chromosome:ASM162521v1:3:6424947:6434108:1 GTTAGATTTTCAAATTTTTCCAAAGTTTTATAATTTTCATTTTTTTAAGAATTCCATTTT TTTCGAATTTTTTCGAATTTTTTAGCTTTTTAGAAGCTTTCAGTTTTTAAGTTTTCTTAA #(.. contains up t

我想在R中执行以下操作

我有一个.fasta文件,包含大约90个DNA基因序列,如下所示:

>3 dna:chromosome chromosome:ASM162521v1:3:6424947:6434108:1
GTTAGATTTTCAAATTTTTCCAAAGTTTTATAATTTTCATTTTTTTAAGAATTCCATTTT
TTTCGAATTTTTTCGAATTTTTTAGCTTTTTAGAAGCTTTCAGTTTTTAAGTTTTCTTAA #(.. contains up to 9300 letters)

>6 dna:chromosome chromosome:ASM162521v1:6:27534931:27544030:1
GTATAGGTTCTAAAAAGACTGTTTGAATTTCCATATAGGCATATAGCTTTAACCATGAGC
TGTTACTAGCCTTTTGCTGATTTTAAGCTTGCTATGAACTATTGTAACATTTTGTTTATT #(.. contains up to 9300 letters)
我想将每个字母分隔成矩阵的单独列,如下所示:

最终输出的维度必须是[我的文件中有多少行就有多少行,有多少列就有多少字母]

输出必须写入excel文件

我已经走了这么远了

input_file <- as.matrix(input_file)

template_matrix <- matrix(,91,9300)

for (i in 1:nrow(input_file)) {
  current_row <- input_file[i,1]
  strip_char <- strsplit(current_row, "")
  first_char <- strip_char[1]

  if (first_char == ">"){
    template_matrix[i,1] <- current_row
    new_i = i+1
    for (j in new_i:nrow(input_file)){
      j_current_row <- input_file[j, 1]
      j_strip_char <- strsplit(j_current_row, "")
      j_first_char <- j_strip_char[1]

      if(j_first_char != ">"){
        for (k in new_i:){
          template_matrix[i, ] #I'VE GOTTEN HOPELESSLY LOST SOMEWHERE
        }
      }
    }
  }
}

input_file除非所有序列的碱基数都完全相同,否则将它们放入矩阵是个坏主意。尽管如此,这可能是一个坏主意,因为矩阵将是巨大的

无论哪种方式,您都可以使用该软件包:


但如前所述,我不认为这个矩阵一定是最方便的表示形式,所以我会在第一步之后停止。

序列确实是不等基的。在这种情况下我该怎么办?此外,一旦完成此步骤(即,一旦我需要的输出位于.csv文件中),就不需要进行进一步的数据操作,这样,如果我愿意,我就可以从excel工作表中快速找到特定的列-所有基以任意多个顺序排列,而无需再次键入代码。这有意义吗?
sequences = seqinr::read.fasta(filename)
names = vapply(sequences, attr, character(1L), 'Annot')
results = cbind(names, do.call(rbind, sequences))