加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 在前两个冒号上拆分字符串

发布时间:2020-12-14 06:02:01 所属栏目:百科 来源:网络整理
导读:我想在前两个冒号上分割一列字符串,但不在任何后续冒号上: my.data - read.table(text='my.string some.data123:34:56:78 -10087:65:43:21 -200a4:b6:c8888 -30011:bbbb:ccccc -400uu:vv:ww:xx -500',header = TRUE)desired.result - read.table(text='my.s
我想在前两个冒号上分割一列字符串,但不在任何后续冒号上:

my.data <- read.table(text='

my.string    some.data
123:34:56:78   -100
87:65:43:21    -200
a4:b6:c8888    -300
11:bbbb:ccccc  -400
uu:vv:ww:xx    -500',header = TRUE)

desired.result <- read.table(text='

my.string1  my.string2  my.string3  some.data
123         34          56:78         -100
87          65          43:21         -200
a4          b6          c8888         -300
11          bbbb        ccccc         -400
uu          vv          ww:xx         -500',header = TRUE)

我进行了广泛的搜索,以下问题最接近我目前的困境:

Split on first comma in string

谢谢你的任何建议.我更喜欢使用底座R.

编辑:

第一个冒号之前的字符数不总是两个,前两个冒号之间的字符数不总是两个.所以,我编辑了这个例子以反映这一点.

解决方法

在基地R:

> my.data <- read.table(text='
+ 
+ my.string    some.data
+ 123:34:56:78   -100
+ 87:65:43:21    -200
+ a4:b6:c8888    -300
+ 11:bbbb:ccccc  -400
+ uu:vv:ww:xx    -500',header = TRUE,stringsAsFactors=FALSE)
> m <- regexec ("^([^:]+):([^:]+):(.*)$",my.data$my.string)
> my.data$my.string1 <- unlist(lapply(regmatches(my.data$my.string,m),'[',c(2)))
> my.data$my.string2 <- unlist(lapply(regmatches(my.data$my.string,c(3)))
> my.data$my.string3 <- unlist(lapply(regmatches(my.data$my.string,c(4)))
> my.data
      my.string some.data my.string1 my.string2 my.string3
1  123:34:56:78      -100        123         34      56:78
2   87:65:43:21      -200         87         65      43:21
3   a4:b6:c8888      -300         a4         b6      c8888
4 11:bbbb:ccccc      -400         11       bbbb      ccccc
5   uu:vv:ww:xx      -500         uu         vv      ww:xx

你会看到我使用stringsAsFactors = FALSE来确保my.string可以作为字符串向量处理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读