Вот одно из решений:
df <- read.table(text = " ortho syllabify
agradeço R_OOR_OR_OR
bala OR_OR
futebol OR_OR_ORC", header = TRUE)
library(purrr)
df <- within(df, {
ortho <- as.character(ortho)
underscore_loc <- gregexpr("_", syllabify)
target <- map2(ortho, underscore_loc, function(string, loc) {
locs <- cbind(c(1, loc) - pmax(0, 1 + 0:length(loc) - 2), c(loc, nchar(string)) - c(1:length(loc), 0))
strings <- apply(locs, 1, function(x) substr(string, x[1], x[2]))
paste(strings, collapse = "_")
})
rm(underscore_loc)
})
df
#> ortho syllabify target
#> 1 agradeço R_OOR_OR_OR a_gra_de_ço
#> 2 bala OR_OR ba_la
#> 3 futebol OR_OR_ORC fu_te_bol
Создано в 2018-06-26 пакетом Представ (v0.2.0).
Пакет purrr
используется для получения функции map2
- которая похожа на lapply
, но работает для ввода по 2 спискам.