2017-05-25 30 views
0

这是我第一次进行twitter分析。tm_map在R中出现错误

#Search data from Twitter 
library("twitteR") 
SearchData = searchTwitter("Bruno Mars", n=1000,lang = 'en') 
SearchData 

#Scrapping Data 
userTimeline("BrunoMars", n=100, maxID =NULL, excludeReplies = FALSE, includeRts = FALSE) 

class(SearchData) 
head(SearchData) 

#Cleanning Data 
library(NLP) 
library(tm) 



TweetList <- sapply(SearchData, function(x) x$getText()) 

TweetList <- (TweetList[!is.na(TweetList)]) 
TweetCorpus <- Corpus(VectorSource(TweetList)) 
TweetCorpus <- iconv(TweetCorpus, to ="utf-8") 

#change data to lower case 

TweetCorpus <- tm_map(TweetCorpus,removePunctuation) 
TweetCorpus <- tm_map(TweetCorpus, removeNumbers) 
TweetCorpus <- tm_map(TweetCorpus, tolower) 

我有这个错误“错误UseMethod(” tm_map”,X): 应用于类的一个对象‘tm_map’不适用的方法。‘人物’在我的最后3行

我试图通过在removePunctuation,removeNumbers和tolower之前添加content_transformer来解决这个问题,但是我仍然有同样的错误,我真的不知道,我需要你的建议和你的建议。发行了几天,但还没有解决。

非常感谢 Ros

回答

0

tm_map必须应用于语料库对象,而不是字符向量。但iconv将您的TweetCorpus对象从语料库返回变成字符向量。

为了解决这个问题,切换您预先处理的顺序,让您使用iconv之前你把微博变成语料库对象:

TweetList <- c("hello", "world", "Hooray", "yep") 
TweetList <- iconv(TweetList, to ="utf-8") 
TweetCorpus <- Corpus(VectorSource(TweetList)) 
+0

非常感谢Patronus –

0

tm最新版本说得那么你不能使用对tm_map的函数进行简单的字符值操作。所以问题在于你的步骤,因为这不是一个“规范”的转换(见getTransformations())。只是

TweetCorpus <- tm_map(TweetCorpus, content_transformer(tolower)) 

content_transformer函数包装更换将一切转换为躯体内正确的数据类型。您可以将content_transformer与任何旨在操纵字符向量的函数一起使用,以便它将在tm_map管道中工作。

+0

非常感谢Lorenzo。你非常有帮助。我遵循的教程可能会很老。 –