你如何在R的tm包中静默保存检查对象?

时间:2013-09-11 19:14:54

标签: r inspect tm

当我将inspect()对象保存在R的tm包中时,它会打印到屏幕上。它确实在data.frame中保存了我想要的数据,但是我有数以千计的文档需要分析,而且屏幕上的打印正在耗尽我的记忆。

library(tm)
data("crude")
matrix <- TermDocumentMatrix(corpus,control=list(removePunctuation = TRUE,
                                             stopwords=TRUE))
out= data.frame(inspect(matrix))

我尝试过每一个我能想到的技巧。 capture.output()更改对象(不是所需的效果),sink()也是如此。 dev.off()不起作用。 invisible()什么都不做。 suppressWarnings(),suppressMessages()和try()毫不奇怪地什么都不做。 inspect命令中没有静音或静音选项。

我能得到的最接近的是

out= capture.output(inspect(matrix))
out= data.frame(out)

显然不会提供相同的data.frame,但如果我需要沿着这条路走下去很容易。任何其他(不那么hacky)的建议都会有所帮助。感谢。

Windows 7 64位R-3.0.1 tm包是最新版本(0.5-9.1)。

2 个答案:

答案 0 :(得分:7)

然后在捕获内部分配:

capture.output(out <- data.frame(inspect(matrix))) -> .null # discarding this

但实际上,inspect用于视觉检查,所以可以尝试

as.data.frame(as.matrix(matrix))

相反(btw matrix是变量的一个非常不幸的名称,因为它是一个基本函数。)

答案 1 :(得分:0)

使用此输入(使用名为“matrix”的变量从您的问题更改的可变名称可能会造成混淆:

library(tm)
data("crude")

tdm <- TermDocumentMatrix(crude,control=list(removePunctuation = TRUE,
                                                 stopwords=TRUE))

然后这将避免打印到屏幕

m <- as.matrix(tdm)

然后我个人会做类似

的事情
require(data.table)
data.table(m, keep.rownames=TRUE)

#               rn 127 144 191 194 211 236 237 242 246 248 273 349 352 353 368 489 502 543 704 708
#    1:     100000   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0
#    2:        108   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1
#    3:        111   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1
#    4:        115   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1
#    5:      12217   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0
# ---                                                                                           
#  996:  yesterday   0   0   0   0   0   0   0   3   0   0   1   0   0   0   0   0   0   0   0   0
#  997: yesterdays   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0
#  998:       york   0   1   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   1   0
#  999:       zero   0   0   0   0   0   0   1   0   0   0   1   0   0   0   0   0   0   0   0   0
# 1000:       zone   0   0   0   0   0   0   0   0   0   0   2   0   0   0   0   0   0   0   0   0