Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何将此数据文件拆分为三列?_Regex_R_Dataframe - Fatal编程技术网

Regex 如何将此数据文件拆分为三列?

Regex 如何将此数据文件拆分为三列?,regex,r,dataframe,Regex,R,Dataframe,我有一个data.frame,看起来像: chr1:29250635-29582124 chr1:46026531-46214183 chr1:46554517-46718374 chr1:51008171-51235816 chr1:63862069-64092146 chr1:78052717-78289590 chr1:85066633-85177704 chr1:94639336-94839130 chr1:97229888-97509581 chr1:98053562-98445381

我有一个data.frame,看起来像:

chr1:29250635-29582124
chr1:46026531-46214183
chr1:46554517-46718374
chr1:51008171-51235816
chr1:63862069-64092146
chr1:78052717-78289590
chr1:85066633-85177704
chr1:94639336-94839130
chr1:97229888-97509581
chr1:98053562-98445381
chr1:114057822-114381300
chr1:115116433-115378793
我想将框架分成三列,如下所示:

CHR     BP1        BP2
chr1    29250635   29582124
chr1    46026531   46214183
chr1    46554517   46718374
chr1    51008171   51235816
chr1    63862069   64092146

我该怎么做呢?

我们可以用
单独的

library(tidyr)
separate(df1, V1, into = c("CHR", "BP1", "BP2"))
#    CHR       BP1       BP2
#1  chr1  29250635  29582124
#2  chr1  46026531  46214183
#3  chr1  46554517  46718374
#4  chr1  51008171  51235816
#5  chr1  63862069  64092146
#6  chr1  78052717  78289590
#7  chr1  85066633  85177704
#8  chr1  94639336  94839130
#9  chr1  97229888  97509581
#10 chr1  98053562  98445381
#11 chr1 114057822 114381300
#12 chr1 115116433 115378793

或者使用
cSplit

library(splitstackshape)
setnames(cSplit(df1, "V1", "-|:", fixed = FALSE), c("CHR", "BP1", "BP2"))[]

或者在使用
sub
将分隔符更改为单个分隔符后,使用
read.table
base R
方法

read.table(text=sub(":", "-", df1$V1), sep="-", header=FALSE,
           col.names = c("CHR", "BP1", "BP2"), stringsAsFactors=FALSE)
#   CHR       BP1       BP2
#1  chr1  29250635  29582124
#2  chr1  46026531  46214183
#3  chr1  46554517  46718374
#4  chr1  51008171  51235816
#5  chr1  63862069  64092146
#6  chr1  78052717  78289590
#7  chr1  85066633  85177704
#8  chr1  94639336  94839130
#9  chr1  97229888  97509581
#10 chr1  98053562  98445381
#11 chr1 114057822 114381300
#12 chr1 115116433 115378793
数据
df1甚至这个
df1 <- structure(list(V1 = c("chr1:29250635-29582124", "chr1:46026531-46214183", 
"chr1:46554517-46718374", "chr1:51008171-51235816", "chr1:63862069-64092146", 
"chr1:78052717-78289590", "chr1:85066633-85177704", "chr1:94639336-94839130", 
"chr1:97229888-97509581", "chr1:98053562-98445381", "chr1:114057822-114381300", 
"chr1:115116433-115378793")), .Names = "V1", class = "data.frame", row.names = c(NA, 
-12L))