У меня есть текстовый корпус, и в рамках предварительной обработки мне нужно выделить все слова в единственном числе.

Допустим, у нас есть набор слов:

corpus <- c("house", "friends", "cats", "dogs") %>% tibble(word = .)

Если я применяю функцию сингулярности (SemNetCleaner) напрямую, она работает, однако мне нужно было бы использовать медленный цикл for, чтобы применить его к каждой строке моего столбца слов:

#install.packages("SemNetCleaner")
library(SemNetCleaner)

corpus[2,1] %>% unlist() %>% singularize()

  word 
"friend"

Однако, если я использую его в мутации, он просто связывает все записи, такие как функция paste ():

corpus %>% mutate(singular = singularize(word))

# A tibble: 4 x 2
  word    singular              
  <chr>   <chr>                 
1 house   house friends cats dog
2 friends house friends cats dog
3 cats    house friends cats dog
4 dogs    house friends cats dog
0
Sebastian 14 Ноя 2020 в 17:00

1 ответ

Лучший ответ

Используйте rowwise ()

corpus %>% rowwise() %>% mutate(singular = singularize(word))
# A tibble: 4 x 2
# Rowwise: 
  word    singular
  <chr>   <chr>   
1 house   house   
2 friends friend  
3 cats    cat     
4 dogs    dog     
0
Karthik S 14 Ноя 2020 в 14:07