从推文获取文本

时间:2014-07-18 16:40:08

标签: r twitter text-mining web-crawler

我想从csv文件中读取我的推文(我之前已经下载过),我遇到了一些问题:

sia.list <- searchTwitter('#singaporeair', n=10, since=NULL, until=NULL, cainfo="cacert.pem")  
sia.df = twListToDF(sia.list)  
write.csv(sia.df, file='C:/temp/siaTweets.csv', row.names=F)

我正在尝试从列表中提取文本,问题在于下面的第三行:

sia.df <- read.csv(file=paste(path,"siaTweets.csv",sep="")) 
sia.list <- as.list(t(sia.df))
sia_txt = sapply(sia.list, function(x) x$getText())

控制台输出:

   > sia.list <- as.list(t(sia.df))
   > sia_txt = sapply(sia.list, function(x) x$getText())
    Error in x$getText : $ operator is invalid for atomic vectors

2 个答案:

答案 0 :(得分:1)

如果要阅读csv文件中的文本,您只需:sia_txt <- sia$text(文本是存储文本的列的名称。)

x$getText中使用的saaply method仅适用于由searchTwitter()生成的列表。因此,您无法将DF转换回List并使用getText。对于例如做:

xyz <- searchTwitter("#xyz", n = 100)

str(xyz)

您将看到适用的方法列表。类似的东西:

$ :Reference class 'status' [package "twitteR"] with 17 fields ..$ text : chr "RT @BET: \"Who's left to love the black woman?\" ~ WATCH last night's #BeingMaryJane here:\nhttp://t.co/xiUho1FVQi http://t.co/"| __truncated__ ..$ favorited : logi FALSE ..$ favoriteCount: num 0 ..$ replyToSN : chr(0) ..$ created : POSIXct[1:1], format: "2015-03-11 13:28:01" ..$ truncated : logi FALSE ..$ replyToSID : chr(0) ..$ id : chr "575649378062434304" ..$ replyToUID : chr(0) ..$ statusSource : chr "<a href=\"http://twitter.com\" rel=\"nofollow\">Twitter Web Client</a>" ..$ screenName : chr "kookie_kay" ..$ retweetCount : num 20 ..$ isRetweet : logi TRUE

and 51 methods, of which 39 are possibly relevant: .. getCreated, getFavoriteCount, getFavorited, getId, getIsRetweet, getLatitude, getLongitude, getReplyToSID, .. getReplyToSN, getReplyToUID, getRetweetCount, getRetweeted, getRetweeters, getRetweets, getScreenName, .. getStatusSource, **getText**, getTruncated, getUrls, initialize

注意getText

答案 1 :(得分:0)

x $ getText()在这里没有意义。因为您正在使用 sapply(),所以 sia.list 的每个元素都会被传递给x,而这些元素没有您可以使用$访问的子元素操作

什么是 getText()?它不是base r或twitteR包中的函数。如果它是来自其他软件包的函数,可能 getText(x)就是你想要的,但是如果不了解它的来源,很难说。