Если вы хотите только извлечь и посчитать значения факторов, которые имеют ровно 4 буквы ( любые буквы, необязательно то же ), то вы можете сделать это:
Шаг 1 - Определить шаблон для сопоставления:
pattern <- "\\w{4}"
Шаг 2 - Определить функцию для извлечения только необработанных совпадений:
extract <- function(x) unlist(regmatches(x, gregexpr(pattern, x, perl = T)))
Шаг 3 - Применить функция к интересующим данным:
extract(data1$y)
И вот результат:
[1] "AAAA" "BBBB"
Шаг 4 - Для подсчета количества совпадений вы можете использовать length
:
length(extract(data1$y))
[1] 2
РЕДАКТИРОВАТЬ : В качестве альтернативы вы можете использовать str_extract
из пакета stringr
:
ШАГ 1: сохранить результат в векторе extr
:
extr <- str_extract(data1$y, "\\w{4}")
ШАГ 2: используя length
, оператор отрицания !
и is.na
, функцию, которая проверяет NA и оценивает TRUE и FALSE, вы можете подсчитать, сколько раз тест проверяет на FALSE :
length(extr[!is.na(extr)])
[1] 2