计算每个字母出现的总次数,然后计算每个字母出现的概率?

时间:2019-03-06 02:38:49

标签: r

我正在尝试在R中学习此内容,一个练习中有一个问题,其中给您的是一个名为story.txt的短故事的文本文档,我将其导入了可变故事下。我需要做两件事,首先,我需要计算每个字母在故事中出现的数量,其次是我需要每个字母出现的概率,并使用概率生成图。

我这样做的想法是讲故事,并将所有内容设置为小写,删除空格和多余的字符,然后将其保留为字母,然后计算每个字母,我唯一的问题是我不知道如何做到这一点,我尝试使用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 :(得分:0)

使用str_split()从字符串中除以"",然后用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,""))
  

table(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)))