首页 > 解决方案 > 拆分列在分隔符 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)

我收到此错误:

(function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, :
参数暗示不同的行数)

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

标签: r

解决方案


你可以试试 :

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

您还可以tstrsplitdata.table包中获得:

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

推荐阅读