如何拆分此列(点表示附加值(:
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', '|')