我有一个使用TM软件包创建的语料库,我已经应用了所有的转换,并准备将其转换回数据框。
当我使用
时twit[[1]]$content
我可以看到我的数据。然而,当我尝试取消列表时,我的所有记录都获得了NA。
twitCln <- data.frame(text=unlist(sapply(twit, '[', "content")), stringsAsFactors=F)
关联的问题Loop through a tm corpus without losing corpus structure在唯一具有相同问题的答案之后进行了讨论,但似乎没有解决方案。
这是一些可重现的代码。
library(tm)
bbTwit <- as.data.frame(c("Text Line One!", "Text Line 2"), stringsAsFactors = F)
colnames(bbTwit) <- 'Contents'
bbTwit$doc_id <- row.names(bbTwit)
twit <- bbTwit[c('doc_id','Contents')]
colnames(twit) <- c('doc_id','text')
twit <-Corpus(DataframeSource(data.frame(twit)))
twit <-tm_map(twit, removePunctuation)
twit <-tm_map(twit, stripWhitespace)
twit[[1]]$content
twitCln <- data.frame(text=unlist(sapply(twit, '[', "content")), stringsAsFactors=F)
预期输出将是具有2个观察值的数据帧,其中“文本行1”将是第一个记录而“文本行2”将是第二个。我得到的是对NA的两个观察
答案 0 :(得分:1)
根据您对所需输出的描述,它听起来像你想要的
doc = lxml.etree.fromstring(testString)
found = doc.findall('channel/item/description')
for desc in found:
if "FORBIDDENSTRING" in desc.text:
desc.getparent().remove(desc)
mydf <- data.frame(unlist(twit)[1:(length(unlist(twit))-1)])
其中行/列名称当然可以使用content1 Text Line One
content2 Text Line 2
设置为您喜欢的任何内容。
或者是一个简单的案例:
names()
rbind(twit[[1]]$content, twit[[2]]$content)
e.g。
[1,] "Text Line One"
[2,] "Text Line 2"
mydf <- data.frame(rbind(twit[[1]]$content, twit[[2]]$content) ) colnames(mydf) <- "Pretty Column" mydf
答案 1 :(得分:1)
要获取内容,只需使用content()
功能即可。例如
content(twit)
# [1] "Text Line One" "Text Line 2"
或将其放在data.frame
中data.frame(text=content(twit))
# text
# 1 Text Line One
# 2 Text Line 2