在tm包中不再支持Dictionary().如何修改代码?

Cpt*_*emo 7 r tm

我刚刚注意到在更新到tmv.0.5-10后,该功能Dictionary()不再受支持了.这是一个错误吗?还是被弃用了?我想用另一个函数来创建字典吗?

既然我现在要修改很多代码行,那么没有工程设计的最佳方法是什么?

Ben*_*Ben 9

正如IShouldBuyABoat所说,你没有给我们任何关于你如何使用的线索Dictionary所以我们无法真正给你任何具体的答案(更多细节更新你的问题).

在任何情况下,你的问题"如何更新我的代码"的答案可能只是"删除Dictionary它应该没问题",你可以在这里看到:

library(tm)
data(crude)
Run Code Online (Sandbox Code Playgroud)

找出Dictionary在早期版本的tm软件包中做了什么:

methods(Dictionary)
getAnywhere(Dictionary.DocumentTermMatrix)
# function(x) structure(Terms(x), class = c("Dictionary", "character"))
getAnywhere(Dictionary.character)
# function (x)  structure(x, class = c("Dictionary", "character"))
Run Code Online (Sandbox Code Playgroud)

无论如何,一种毫无意义的功能,似乎是非常明智的删除它.但是如何更新依赖它的代码呢?

您可能使用过Dictionary这样的:

myDictionary <- Dictionary(c("some", "tokens", "that", "I", "am", "interested", "in"))
inspect(DocumentTermMatrix(crude, list(dictionary = myDictionary)))
Run Code Online (Sandbox Code Playgroud)

既然这个函数不再可用,你可以使用字符向量来代替:

myTerms <- c("some", "tokens", "that", "I", "am", "interested", "in")
inspect(DocumentTermMatrix(crude, list(dictionary = myTerms)))
Run Code Online (Sandbox Code Playgroud)

这两个示例的输出是相同的,第一个使用tm版本0.5-9,第二个版本使用版本0.5-10

要使用NEWS中的说明,Terms如果要获取文档术语矩阵中的所有单词,就像这样

Terms(DocumentTermMatrix(crude))
Run Code Online (Sandbox Code Playgroud)

如果这些都不能帮助您,那么您需要提供有关您尝试执行的操作的更多详细信息.