Подсчитать общее количество раз, которое появляется каждая буква, затем рассчитать вероятность появления каждой буквы? - PullRequest
1 голос
/ 06 марта 2019

Я пытаюсь выучить это в R, и у упражнения есть вопрос, где вам дается текстовый документ рассказа story.txt, я импортировал его под переменной story. Мне нужно сделать с ним две вещи: во-первых, мне нужно посчитать, сколько каждой буквы появляется в истории, а во-вторых, мне нужна вероятность появления каждой буквы и сгенерировать график, используя вероятности.

Моя идея сделать это состоит в том, чтобы взять историю и установить все в нижний регистр, убрать пробелы и лишние символы и оставить его как просто буквы, а затем считать каждую букву, единственная проблема, которую я имею, это то, что я не знаю Как это сделать, я пытался использовать str_count, но я получаю сообщение об ошибке.

Код пока:

story <- readLines("story.txt")
story <- tolower(story) # i sets to lower case
story <- gsub(" ","",story) # remove all spaces
story <- gsub("\\W","",story)
storydata <- str_count(story, "a")

Может ли кто-нибудь мне помочь? Любые идеи или функции или пример кода? Я застрял, не зная, как двигаться вперед.

Пример текста из истории:

"Я пытался дозвониться до вас прошлой ночью и прошлой ночью. Телефон здесь был ..."

«С тобой все в порядке, Мюриэль?»

После запуска функции:

[18] ""
[19] «Он был в состоянии достигнуть и того, и другого раньше»
[20] ""
[21] areyouallrightmuriel

1 Ответ

0 голосов
/ 06 марта 2019

Используйте str_split() из stringr для разделения на "", затем table() для подсчета.

Lorem <- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sit amet odio aliquam, viverra metus id, sodales tortor. Nulla quis pretium tellus. Aenean efficitur sodales nulla nec efficitur. Suspendisse at risus at eros pharetra tincidunt. Quisque pharetra erat non dictum tempor. Nulla feugiat, tortor a dapibus blandit, sapien est ornare felis, quis egestas tellus purus eget quam. Sed justo sapien, pulvinar quis justo vel, tristique condimentum justo. Suspendisse fermentum nibh eros, eu pretium purus molestie vel."

table(stringr::str_split(Lorem,""))

таблица (stringr :: str_split (Lorem ""))

    ,  .  a  A  b  c  d  D  e  f  g  h  i  j  l  L  m  n  N  o  p  q  Q  r  s  S  t  u  v 
75  9  9 29  1  3 10 14  1 51  7  4  3 39  3 21  1 16 22  2 23 15  7  1 29 40  3 40 38  5 

чтобы получить вероятности, разделите их на общее число nchar(Lorem). (С R это векторизация, поэтому вам не нужно зацикливаться) Вы можете tolower() сначала, если хотите.

затем просто оберните его в plot() ... но, возможно, сделайте его немного лучше, если сначала использовать sort() plot(sort(table(stringr::str_split(Lorem,""))/nchar(Lorem)))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...