Заставить gsub заменить только целые слова?

(Я использую R.) Для списка слов, который называется «goodwords.corpus», я перебираю документы в корпусе и заменяю каждое из слов в списке «goodwords.corpus» словом + a число.

Так, например, если слово «хорошо» находится в списке, а «спокойной ночи» нет в списке, то этот документ:

I am having a good time goodnight

превратится в:

I am having a good 1234 time goodnight

** Я использую этот код (EDIT - сделал это воспроизводимым):

goodwords.corpus <- c("good")
test <- "I am having a good time goodnight"
for (i in 1:length(goodwords.corpus)){
test <-gsub(goodwords.corpus[[i]], paste(goodwords.corpus[[i]], "1234"), test)
}

Однако проблема в том, что я хочу, чтобы gsub заменял только ВСЕ слова. Проблема, которая возникает, заключается в том, что «good» находится в списке «goodwords.corpus», но это также влияет на «goodnight», которого нет в списке. Итак, я получаю это:

I am having a good 1234 time good 1234night

Можно ли в любом случае сказать gsub заменить только ВСЕ слова, а не слова, которые могут быть частью других слов?

Я хочу использовать это:

test <-gsub("\\<goodwords.corpus[[i]]\\>", paste(goodwords.corpus[[i]], "1234"), test)
}

Я читал, что \ <и \> скажут gsub искать только целые слова. Но очевидно, что это не работает, потому что goodwords.corpus [[i]] не будет работать, когда он в кавычках.

Какие-либо предложения?

Ответы на вопрос(2)

Ваш ответ на вопрос