我有一张这样的table:
>head(X)
column1 column2
sequence1 ATCGATCGATCG
sequence2 GCCATGCCATTG
我需要一个fasta文件的输出,看起来像这样:
sequence1
ATCGATCGATCG
sequence2
GCCATGCCATTG
所以,基本上我需要第2列的所有条目成为新的行,穿插在第一列中。然后可以丢弃旧的第二列。
我通常的做法是在notepad++中用\n替换空白(或制表符),但我担心我的文件太大了。
有没有办法在R中做到这一点?
4条答案
按热度按时间4sup72z81#
我也有同样的问题,但发现了一个非常简单的方法来转换 Dataframe 到一个fasta文件使用包:“seqRFLP”。
请执行以下操作:安装并加载seqRFLP
您的序列需要位于数据框中,序列标题位于第1列,序列位于第2列[无论是核苷酸还是氨基酸]
下面是一个示例 Dataframe
然后使用以下函数将 Dataframe 转换为.fasta格式:'dataframe2fas'
5n0oy7gb2#
然后,当您写入文件时,可以使用
因此行名称、列名称和引号将消失。
3duebb1j3#
当我这样做的时候,我倾向于使用这样的东西:
这将创建一个空的字符向量,其长度是表长度的两倍;然后将column 1中的值放在从1开始的每隔一个位置,并将column 2中的值放在从2开始的每隔一个位置。
然后使用writeLines写入:
在这个答案中,我在标题中添加了一个“>”,因为这是fasta格式的标准,并且是一些接受fasta输入的工具所必需的。如果你不介意添加“>”,那么:
如果您没有使用选项来阻止字符作为因子读取文件,那么您可能需要使用
<- as.character(X$column1)
。也有一些工具可用于此转换,我认为Galaxy浏览器有一个选项。yeotifhr4#
在头部添加>
绑定header和seqs行
快速写入