Мы можем просто использовать parse_number
из readr
library(readr)
parse_number(v1)
#[1] 1 2 3 8 9 12
Или используя sub
из base R
для захвата чисел в начале строки
as.integer(sub("^(\\d+).*", "\\1", v1))
#[1] 1 2 3 8 9 12
Или используя regmatches/regexpr
из base R
as.integer(regmatches(v1, regexpr("^\\d+", v1)))
Или с str_remove
из stringr
library(stringr)
as.integer(str_remove(v1, "%.*"))
#[1] 1 2 3 8 9 12
или от stringi
library(stringi)
as.integer(stri_extract_first_regex(v1, "\\d+"))
#[1] 1 2 3 8 9 12
данные
v1 <- c("1%3ABC", "2%3ABC", "3%3ABC", "8%3ABC", "9%3ABC", "12%3ABC")