R 将一列拆分为多列

R 将一列拆分为多列,r,bioinformatics,R,Bioinformatics,我有一个表,第一列是: chr10:100002872-100002872 chr10:100003981-100003981 chr10:100004774-100004774 chr10:100005285-100005285 chr10:100007123-100007123 我想将其转换为3个独立的列,但无法定义“:”和“-”以使用strsplit命令。 我该怎么办?这里有一种方法: library(data.table) DF[, paste0("V1.",1:3) ] <-

我有一个表,第一列是:

chr10:100002872-100002872
chr10:100003981-100003981
chr10:100004774-100004774
chr10:100005285-100005285
chr10:100007123-100007123
我想将其转换为3个独立的列,但无法定义“:”和“-”以使用strsplit命令。 我该怎么办?

这里有一种方法:

library(data.table)
DF[, paste0("V1.",1:3) ] <- tstrsplit(DF$V1, ":|-")

#                          V1  V1.1      V1.2      V1.3
# 1 chr10:100002872-100002872 chr10 100002872 100002872
# 2 chr10:100003981-100003981 chr10 100003981 100003981
# 3 chr10:100004774-100004774 chr10 100004774 100004774
# 4 chr10:100005285-100005285 chr10 100005285 100005285
# 5 chr10:100007123-100007123 chr10 100007123 100007123

备选方案。在base R中有(麻烦的)方法可以得到相同的东西,比如

DF[, paste0("V1.",1:3) ] <- do.call(rbind, strsplit(DF$V1, ":|-"))

同样与
tidyr
类似。如果要保留原始列,请 如果要为新列设置相应的类,可以添加
、删除=FALSE
convert=TRUE
separate
有一个默认的正则表达式,可以对非字符/数字值进行拆分,因此不需要指定条件。如果某些行缺少组件add
,extra=“merge”


使用
|
分隔拆分字符?您的意思是什么?请多解释
DF[, paste0("V1.",1:3) ] <- do.call(rbind, strsplit(DF$V1, ":|-"))
library(splitstackshape)
cSplit(DF, "V1", ":|-")
#     V1.1      V1.2      V1.3                      V1_1
# 1: chr10 100002872 100002872 chr10:100002872-100002872
# 2: chr10 100003981 100003981 chr10:100003981-100003981
# 3: chr10 100004774 100004774 chr10:100004774-100004774
# 4: chr10 100005285 100005285 chr10:100005285-100005285
# 5: chr10 100007123 100007123 chr10:100007123-100007123
library(tidyr)
separate(DF, "V1", paste0("V1.",1:3))
#    V1.1      V1.2      V1.3
# 1 chr10 100002872 100002872
# 2 chr10 100003981 100003981
# 3 chr10 100004774 100004774
# 4 chr10 100005285 100005285
# 5 chr10 100007123 100007123