Вот базовый способ R сделать это, используя функции apply
. Мы можем использовать lapply
в столбцах d
и r
(показан только код для d
), а затем перебирать фрейм данных терминов с заменами. Затем мы вызываем sub
для каждого найденного термина / замены.
r$d <- lapply(r$d, function(x) {
apply(m, 1, function(y) {
x <<- gsub(paste0("\\b", y[1], "\\b"), y[2], x)
})
return(x)
})
r
d r
1 tc6 3
2 tc6,tc7 3,6,7
3 tc6,tc7,tc8 42,57
Данные:
r <- data.frame(d = c("100", "100,111", "100,111,123"), r = c("3", "3,6,7", "42,57"), stringsAsFactors=FALSE)
m <- data.frame(id = c("3", "6", "7", "42", "57", "100", "111", "123"), name= c("tc1", "tc2", "tc3", "tc4", "tc5", "tc6", "tc7", "tc8"))
Обратите внимание, что с помощью родительского назначения области видимости <<-
оператор часто злой, но в этом случае я использую его для ссылки на область действия, определенную во внешнем вызове lapply
, поэтому, возможно, это более приемлемо.