Рассмотрим на следующие data.frame:stringr :: str_sub выход неожиданно
df <- structure(list(sufix = c("atizado", "atoria", "atório", "auta",
"áutico", "ável"), min_stem_len = c(4, 5, 3, 5, 4, 2), replacement = c("",
"", "", "", "", ""), exceptions = list(character(0), character(0),
character(0), character(0), character(0), c("afável", "razoável",
"potável", "vulnerável"))), .Names = c("sufix", "min_stem_len",
"replacement", "exceptions"), row.names = 21:26, class = c("tbl_df",
"tbl", "data.frame"))
У меня есть список строк в переменной sufix
этого data.frame. Теперь у меня есть слово word <- "amável"
, и я хочу получить sufix этого слова той же длины, что и каждое слово df$sufix
.
Я использую ниже код:
library(stringr)
word <- "amável"
str_sub(word, start = -stringr::str_length(df$sufix))
Но это выводит это:
> str_sub(word, start = -stringr::str_length(df$sufix))
[1] "amável" "mável" "mável" "vel" "mável" "vel"
> df$sufix
[1] "atizado" "atoria" "atório" "auta" "áutico" "ável"
Я ожидал, что последний элемент результирующего вектора быть «Авель», так как:
> str_length("ável")
[1] 4
> str_sub(word, start = -4)
[1] "ável"
Здесь мор e простой воспроизводимый пример:
set.seed(100)
a <- sample(1:10, 10000, replace = T)
res <- rep("ábc", 10000) %>% str_sub(start = -a)
sum(ifelse(a > 3, 3, a) != str_length(res))
[1] 2504
поднял вопрос к STRINGI-х GitHub страницы: https://github.com/gagolews/ stringi/issues/227 – PavoDive