我正在尝试实现马尔可夫链并需要计算前一个词的概率。我创建了一个数据框,并尝试了mutate和for循环。在这两种情况下,由于某种原因,它总是只返回第一个元素的前一个单词。使用的数据框是
storage/logs/laravel.log
我写了一个函数来获取Previous
freq term
ball costs 1 ball costs
bat bal 1 bat bal
bat ball 1 bat ball
bread eggs 1 bread eggs
buy bread 1 buy bread
costs rupe 1 costs rupe
我尝试了mutate和for循环。两者都只用第一行的前一个单词填充所有行(见下文)
getPrevious <- function(term)
{
b <- strsplit(term,split=" ")
c <- unlist(b)
c[1]
}
而我似乎只是
mutate(bigram, x= getPrevious(term))
我不明白为什么它无法从每个学期中选择上一个单词。我甚至试过一个for循环来达到同样的效果。
我哪里错了?
由于 内甚
答案 0 :(得分:1)
尝试使用功能:
getPrevious <- function(term)
{
sapply(strsplit(term,split=" "), head, 1)
}
您所做的是在列表中拆分列的每个元素,将其移动到向量并获取此向量的第一个元素ball
。您需要在列表中拆分列的每个元素,然后获取此列表中每个元素的第一个单词。