tm_map 是 R 中的错误
tm_map is error in 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)
我遇到了这个错误 "Error in UseMethod("tm_map", x) :
'tm_map' 的适用方法没有应用于 class "character" 在我的最后 3 行的对象。
我尝试通过在我的代码中的 removePunctuation、removeNumbers 和 tolower 之前添加 content_transformer 来解决这个问题,但我仍然有同样的错误。我真的不知道。我需要你的建议和忠告。我已经修复了几天这个问题,但还没有解决。
非常感谢
罗斯
tm_map
必须应用于语料库对象,而不是字符向量。但是 iconv
将您的 TweetCorpus
对象从 Corpus 返回 转换为字符向量。
要解决此问题,请切换预处理顺序,以便在将推文转换为语料库对象之前使用iconv
:
TweetList <- c("hello", "world", "Hooray", "yep")
TweetList <- iconv(TweetList, to ="utf-8")
TweetCorpus <- Corpus(VectorSource(TweetList))
tm
的最新版本使您不能再使用 tm_map
对简单字符值进行操作的函数。所以问题是您的 tolower
步骤,因为那不是 "canonical" 转换(参见 getTransformations()
)。只需将其替换为
TweetCorpus <- tm_map(TweetCorpus, content_transformer(tolower))
content_transformer
函数包装器会将语料库中的所有内容转换为正确的数据类型。您可以将 content_transformer
与任何旨在操纵字符向量的函数一起使用,以便它可以在 tm_map
管道中工作。
这是我第一次做推特分析。
#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)
我遇到了这个错误 "Error in UseMethod("tm_map", x) : 'tm_map' 的适用方法没有应用于 class "character" 在我的最后 3 行的对象。
我尝试通过在我的代码中的 removePunctuation、removeNumbers 和 tolower 之前添加 content_transformer 来解决这个问题,但我仍然有同样的错误。我真的不知道。我需要你的建议和忠告。我已经修复了几天这个问题,但还没有解决。
非常感谢 罗斯
tm_map
必须应用于语料库对象,而不是字符向量。但是 iconv
将您的 TweetCorpus
对象从 Corpus 返回 转换为字符向量。
要解决此问题,请切换预处理顺序,以便在将推文转换为语料库对象之前使用iconv
:
TweetList <- c("hello", "world", "Hooray", "yep")
TweetList <- iconv(TweetList, to ="utf-8")
TweetCorpus <- Corpus(VectorSource(TweetList))
tm
的最新版本使您不能再使用 tm_map
对简单字符值进行操作的函数。所以问题是您的 tolower
步骤,因为那不是 "canonical" 转换(参见 getTransformations()
)。只需将其替换为
TweetCorpus <- tm_map(TweetCorpus, content_transformer(tolower))
content_transformer
函数包装器会将语料库中的所有内容转换为正确的数据类型。您可以将 content_transformer
与任何旨在操纵字符向量的函数一起使用,以便它可以在 tm_map
管道中工作。