正则表达式 – 在前两个冒号上拆分字符串
发布时间: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可以作为字符串向量处理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |