我正在使用tm包通过以下代码清理一些数据:

mycorpus <- Corpus(VectorSource(x))
mycorpus <- tm_map(mycorpus, removePunctuation)


然后,我想将语料库转换回数据框,以便导出包含数据框原始格式的数据的文本文件。我尝试了以下方法:

dataframe <- as.data.frame(mycorpus)


但这返回一个错误:


“ as.data.frame.default。(mycorpus)中的错误:无法将类“ c(vcorpus,>语料库”)强制转换为data.frame


如何将语料库转换为数据框?

最佳答案

您的语料库实际上只是具有某些额外属性的字符向量。因此,最好将其转换为字符,然后可以将其保存到data.frame中,如下所示:

library(tm)
x <- c("Hello. Sir!","Tacos? On Tuesday?!?")
mycorpus <- Corpus(VectorSource(x))
mycorpus <- tm_map(mycorpus, removePunctuation)

dataframe <- data.frame(text=unlist(sapply(mycorpus, `[`, "content")),
    stringsAsFactors=F)


哪个返回

              text
1        Hello Sir
2 Tacos On Tuesday


更新:使用较新版本的tm,他们似乎已经更新了as.list.SimpleCorpus方法,该方法确实与使用sapplylapply混淆。现在我想你必须使用

dataframe <- data.frame(text=sapply(mycorpus, identity),
    stringsAsFactors=F)

09-06 08:31