Я работаю в 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]]
}
Может ли кто-нибудь помочь мне понять, что мне нужно сделать, чтобы сделать это разделение по желанию?