Я хотел бы добавить число, указывающее на x ^ вхождение слова в векторе. (Таким образом, этот вопрос отличается от Создайте столбец с дублированными значениями, уникальными в кадре данных , потому что у меня есть простой вектор и я стараюсь избежать лишних затрат при его преобразовании в data.frame).
например. для вектора:
book, ship, umbrella, book, ship, ship
вывод будет:
book, ship, umbrella, book2, ship2, ship3
Я решил это сам, переместив вектор в кадр данных и затем используя функцию группировки. Это похоже на использование кувалды, чтобы сломать орехи:
# add consecutive number for equal string
words <- c("book", "ship", "umbrella", "book", "ship", "ship")
# transpose word vector to data.frame for grouping
df <- data.frame(words = words)
df <- df %>% group_by(words) %>% mutate(seqN = row_number())
# combine columns and remove '1' for first occurrence
wordsVec <- paste0(df$words, df$seqN)
gsub("1", "", wordsVec)
# [1] "book" "ship" "umbrella" "book2" "ship2" "ship3"
Есть ли более чистое решение, например, используя пакет stringr?