将 data.frame 拆分为 2 列

Splitting the data.frame into 2 columns

我有一个 fasta 文件,我使用 "read.delim" 将 fasta 文件读入 R。相应的 data.frame 如下所示:

>tm_sd_1256_2_1
MJAKDHRZTASDJASJDKASJDURUJDFLSDJFSDIFJKSDFKSJDFLJSDLFD
ASDJASDJ
>tm_sd_5672_1_2
AIZZTQBCSKLKDSHDADBCMSJHKQUWIRJHJJKKDLJSGDHASGDZGDHGHAGSDZASDASDVASGASDHGCAHGS
SADASDA[sample.fasta file][1]
>tm_sd_543_1_2
MUZTREQWERNBVXCYMNMVHZTOPOPOEURDASDOPOQWEUZQUIZRZIRIEIWUEWASDHASHDAHSDHAKHHSDHASHDJASHDAHUWIEUROWUOERUOWEUROOWWWW
>tm_sd_212_0_2
MTZTPSPASDASZDATSZGZASDZATSDASDARSDASDASDASDASDZTASZDTAXAYXFASTDRASRZWUEWERZWERZ

我想将此 data.frame 拆分为两个 columns.One 列用于序列名称,另一列用于各个序列。

我创建了一个 data.frame 并将序列的名称存储在一列中,但是当我尝试将相应的序列存储在另一列中时,它抛出了一个错误,指出替换有 55 行,数据有 436 行.

我试过下面的代码,它给了我如下错误:

new_DF=NULL
new_DF$names=as.data.frame(names(fasta_seq))
new_DF$sequences=as.data.frame(fasta_seq)

如何使用 R 实现此目的。请指导我。

尝试

lines <- readLines('deena.fasta')
indx <- grepl('>', lines)
Sequence <- tapply(seq_along(indx),cumsum(indx), FUN=function(x) 
            paste(lines[tail(x,-1)], collapse=""))
d1 <- data.frame(names=lines[indx], Sequence, stringsAsFactors=FALSE)
head(d1,2)
#           names
#1 >tm_sd_1256_2_1
#2 >tm_sd_5672_1_2
                                                                           #                         Sequence
# 1                                              MJAKDHRZTASDJASJDKASJDURUJDFLSDJFSDIFJKSDFKSJDFLJSDLFDASDJASDJ
# 2 AIZZTQBCSKLKDSHDADBCMSJHKQUWIRJHJJKKDLJSGDHASGDZGDHGHAGSDZASDASDVASGASDHGCAHGSSADASDA[sample.fasta file][1]