我正在使用该tm软件包使用以下代码清理一些数据:
mycorpus <- Corpus(VectorSource(x))
mycorpus <- tm_map(mycorpus, removePunctuation)
Run Code Online (Sandbox Code Playgroud)
然后,我想将语料库转换回数据框,以便导出包含数据帧原始格式的数据的文本文件.我尝试过以下方法:
dataframe <- as.data.frame(mycorpus)
Run Code Online (Sandbox Code Playgroud)
但是这会返回一个错误:
"as.data.frame.default中的错误.(mycorpus):无法将类"c(vcorpus,> corpus")强制转换为data.frame
如何将语料库转换为数据框?
MrF*_*ick 22
你的语料库实际上只是一个带有一些额外属性的字符向量.因此最好将其转换为字符,然后您可以将其保存到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)
Run Code Online (Sandbox Code Playgroud)
返回
text
1 Hello Sir
2 Tacos On Tuesday
Run Code Online (Sandbox Code Playgroud)
更新:对于更新的版本tm,他们似乎更新了as.list.SimpleCorpus使用sapply和真正混淆的方法lapply.现在我想你必须使用
dataframe <- data.frame(text=sapply(mycorpus, identity),
stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)
语料库分类对象具有可content通过以下方式访问的属性get:
library("tm")
x <- c("Hello. Sir!","Tacos? On Tuesday?!?")
mycorpus <- Corpus(VectorSource(x))
mycorpus <- tm_map(mycorpus, removePunctuation)
attributes(mycorpus)
# $names
# [1] "content" "meta" "dmeta"
#
# $class
# [1] "SimpleCorpus" "Corpus"
#
df <- data.frame(text = get("content", mycorpus))
head(df)
# text
# 1 Hello Sir
# 2 Tacos On Tuesday
Run Code Online (Sandbox Code Playgroud)