我如何将多个文本附加到一个数据帧(标题)内使用R中的append函数for循环?



我有多个*.txt文件,其中包含我想在r中处理的标题和文本。下面的程序读取所有*.txt并显示最终文件,同时跳过第一个读取的文本。我的计划如下。它使用for循环,我想看到所有的文本

library(here)
library(glue)
library(tm)
library(SnowballC)
library(tidyverse)
library(tidytext)
all_texts <- list.files(setwd('.KCI/'), (startsWith = 'abstract'))
for(i in seq(1:length(all_texts)))
{
data <- read_tsv(all_texts[i], , show_col_types = FALSE)
corpus <- Corpus(VectorSource(data[i]))
corpus[i] <- tm_map(corpus[i], tolower)
corpus[i] <- tm_map(corpus[i], removePunctuation)
corpus[i] <- tm_map(corpus[i], removeNumbers)
corpus[i] <- tm_map(corpus[i], stripWhitespace)
corpus[i] <- tm_map(corpus[i], removeWords, c(stopwords("english"), mystopwords))
corpus[i] <- tm_map(corpus[i], stemDocument)
dtm <- DocumentTermMatrix(corpus[i])
}

这个程序只读取最后的文档,而跳过前面的文档。因此,我希望在最后一个文档之前显示其他文档。

<Title>       <Year>        <Text>
How is it?     1998          I am wondering if it could end like that. Therefore the deal is too good to be true

如果您提供了一些数据,这将容易得多。

library(tm)
library(SnowballC)
##
#   two documents based on your example (t1 & t2 are identical here).
#
t1 <- read.delim(text='
TitletYeartText
How is it?t1998tI am wondering if it could end like that. Therefore the deal is too good to be true',
header=TRUE)
t2 <- read.delim(text='
TitletYeartText
How is it?t1998tI am wondering if it could end like that. Therefore the deal is too good to be true',
header=TRUE)
data <- list(t1,t2)   # listof documents
dtm.list <- lapply(data, function(x) {
corpus <- Corpus(VectorSource(x))
corpus <- tm_map(corpus, tolower)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, removeNumbers)
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, removeWords, c(stopwords("english")))
corpus <- tm_map(corpus, stemDocument)
DocumentTermMatrix(corpus)
})
lapply(dtm.list, inspect)

注意我漏掉了mystopwords,因为你没有提供。在您的示例中,您可以将read_tsv(...)放回函数中,并在文件名列表中使用lapply(...)。比如:

dtm.list <- lapply(all.texts, function(x) {
data   <- read_tsv(x)
corpus <- Corpus(VectorSource(data))
...
})

其中...是我上面例子中的代码行。

如果你的最终目标是分析词频,你最好使用?termFreq

最新更新