частота слов

голоса
1

Я использую ниже код для подсчета появления слова в данном предложении

wordCount = function(sentence,word){
splitedVectorString <- c() 
splitedVectorString <- strsplit(sentence, )
count <- 0

for (j in splitedVectorString) {
  print(length(splitedVectorString))
  print(splitedVectorString)
  print(word)
  if (identical(word,j)) {
    count <- count + 1
    print(count)
  }
}
}

Программа работает успешно, но я получаю счет как 0. Я называю эту функцию на консоли, как

wordCount(This is XYZ and is running late,is)

При печати длины расщепляется вектор splitedVectorStringдает мне 1. Я получаю вопрос в spliting приговора? Точно я не знаю , что происходит неправильно. Я только начал изучать программирование R

Задан 21/12/2016 в 08:12
источник пользователем
На других языках...                            


1 ответов

голоса
1

Что вы можете сделать, это следующее:

wordCount = function(sentence,word){

  splitedVectorString <- unlist(strsplit(sentence," "))
  count <- sum(word == splitedVectorString)
  count

  }

Вы unlist результата strsplit так, что у вас есть вектор (strsplit возвращает список, и что является причиной, вы получите длина 1!) Со всеми словами в вашем предложении, а затем вы просуммировать все значения, которые равны ваше слово.

Выражение word == splitedVectorStringвозвращает вектор той же длины , как и splitedVectorString с истинными и ложными в зависимости от того , отдельный элемент вектора так же , как слово.

> wordCount("This is XYZ and is running late","is")
[1] 2
Ответил 21/12/2016 в 08:26
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more