拆分列,在分隔符R之间保留空值



如何拆分此列(点表示附加值(:

annotation
gene1|allele1|effect1|x1|...... 
gene2|||x2|......

分成几个不同的列:

gene    allele    effect     x    .     .     .
gene1   allele1   effect1    x1   .     .     . 
gene2   NA        NA         x2   .     .     .

我试过了:

list<-strsplit(as.character(df$annotation), '|')

问题是,它返回了一个维度不同的列表,因为它没有计算两个|之间的空格。那么,当我这样做的时候:

new_df<-as.data.frame(list)

我得到这个错误:

(函数(…,row.names=NULL,check.rows=FALSE,check.names=TRUE,(中的错误:
参数表示的行数不同

那么,sprintf转换如何将分隔符之间的空格计数为NA?

您可以尝试:

stringr::str_split(df$annotation, '|', fixed = TRUE, simplify = TRUE)

您还有来自data.table包的tstrsplit

library(data.table)
setDT(df)
df[, tstrsplit(annotation, "|", fixed = TRUE)

我们可以使用cSplit

library(splitstackshape)
cSPlit(df, 'annotation', '|')

最新更新