如何基于末尾数字条件按分号分割R语言字符串?
问题:R语言按字符串末尾数字分割字符串
我现在用R语言处理这类格式的字符串:
"a1_1;a1_2;a1_5;a1_6;a1_8" "two1_1;two1_4;two1_5;two1_7"
我的需求是:把每个字符串按照末尾数字是否小于7分割成两个字符串。拿上面的例子来说,期望输出是:
"a1_1;a1_2;a1_5;a1_6" "a1_8" 和 "two1_1;two1_4;two1_5" "two1_7"
我自己尝试了下面这段代码,但没成功:
x <- "a1_1;a1_2;a1_5;a1_6;a1_8" str_split("x", "(\\d<7);")
之前有朋友给了我这样一个函数,但我发现它没办法处理分号前后都包含数字的情况,我试着修改了几次,还是没得到正确结果:
f1 <- function(strn) { strsplit(gsubfn("(;[A-Za-z]+\\d+)", ~ if(readr::parse_number(x) >= 7) paste0(",", sub(";", "", x)) else x, strn), ",")[[1]] }
请问我需要怎么修改代码,才能实现我想要的分割效果?
内容的提问来源于stack exchange,提问作者tjnel
相关产品推荐
相关产品推荐

