我的目的是将文本的前半部分与完整的文本进行比较。我已经使用全文进行了多次分析,我只是在readtext -函数的帮助下将全文加载到r中(以及一些附加变量(如会话号)的函数)。同样,我使用相同的函数再次加载文本,现在想要删除所述文本的后半部分。
我的想法是首先计算每个字符串中的单词数,我使用:
dataframe$numwords <- str_count (dataframe$text, "\w+")
下一步是,使用for循环删除一半的"numwords"从文本列中的每一行获取。然而,我不知道该怎么做。还有更好的办法吗?
我的数据帧看起来像这样(注意:我的数据帧中的文本平均每行包含大约6000个单词)
下面,我们使用strsplit()
将文本列拆分为单词。
然后我们使用lapply()
来计算每个文本的一半有多少个单词。
最后,我们只返回每个文本的前半部分,但在此过程中我们丢失了所有标点符号。
lapply(strsplit(dataframe$text, split = "\W+"), function(words) {
half <- round(length(words) / 2, 0)
paste(words[1:half], collapse = " ")
})
编辑
如果我们想保留标点符号,那么我们需要做一些调整。
我们的regex没有保留分隔符,但是次要的作用是保留一些空格作为"单词",所以我们必须删除它们。我们还使用trim_ws()
来删除尾随空格。
lapply(strsplit(dataframe$text, split = "(?<=\W)", perl = TRUE), function(words) {
words <- words[words != " "]
half <- round(length(words) / 2, 0)
new_text <- paste(words[1:half], collapse = "")
trimws(new_text)
})