Пример фрейма данных:
words <- c('Nothing', 'no thing', 'nada', 'nuthin', 'not a thing', 'nothing', 'nothing', 'Nothing', 'nil')
number <- c(1:9)
df <- data.frame(words, number)
В этом df мне нужно заменить все слова, которые эквивалентны «ничему», на «ничего». В этом примере df это все слова, но на самом деле df содержит много слов, которые не следует изменять. У меня есть текстовый файл со списком слов, которые следует изменить, и я прочитал этот файл с помощью read_delim. После чтения файла 'changes' отображается как 'list' после его выполнения через typeof () и как "spec_tbl_df" "tbl_df" "tbl" "data.frame" после его выполнения через class ().
Мне удалось заставить FindReplace работать только из пакета DataCombine. Сначала я создал столбец замены в «изменениях», а затем прогнал его через FindReplace.
changes <- mutate(changes, Replacement='Nothing')
df <- FindReplace(df, 'words', changes, from='words', to='Replacement', exact=TRUE, vector=FALSE)
Результаты - это то, что я хочу.
words number
Nothing 1
Nothing 2
Nothing 3
Nothing 4
Nothing 5
Nothing 6
Nothing 7
Nothing 8
Nothing 9
Но я думаю, что должен быть способ запустите al oop поверх 'changes' и используйте для этого sapply или str_replace_all. Но я не мог заставить их работать. Я продолжал получать сообщение об ошибке: Ошибка в UseMethod ("тип"): нет применимого метода для "типа", примененного к объекту класса "c ('tbl_df', 'tbl', 'data.frame')". Я хотел бы знать, как заставить работать эти два варианта, если это возможно. Также мы будем признательны за ваши мысли о пакете DataCombine. Раньше не встречал.