R twitter搜索:简化搜索以减少冗余

时间:2016-02-22 06:32:46

标签: r

我开发了一个使用twitteR中searchTwitter函数的地理编码来搜索twitter的功能。我希望下载在给定位置的距离内发送的所有推文。为了确保我得到所有推文,我搜索元音(a,e,i,o,u),然后用逗号“,”和句号“。”。我当然会得到重复的推文,然后我会在函数之外删除。这让我觉得这是一种繁琐的搜索方式,因为我正在调用7次搜索。

任何人都可以建议一种更有效的方法,在searchTwitter调用中没有那么多冗余吗?

这是我的功能:

download_tweets<-function(loc, range,srch_st){
 if (loc=="brisbane") {lat=-27.470506
                      lon=153.022957
                      gc<-paste(lat,",",lon,",",range,"km",sep="")
 } 
  if (loc=="tvl") {lat=-19.286119
                    lon=146.796374
                    gc<-paste(lat,",",lon,",",range,"km",sep="")
                  } 

  if (loc=="cairns") {lat=-16.918881
                      lon=145.764427
                     gc<-paste(lat,",",lon,",",range,"km",sep="")
                    } 

  for (i in 1:nrow(srch_st)){findit<-paste(loc,"_",srch_st[i,"alt"],sep="")
                                x<-searchTwitter(as.character(srch_st[i,"srch"]), n=15000,geocode=gc)
                               if (length(x)>0) {x<-twListToDF(x)
                                                x<-unique(x)
                                                x$srch<-findit
                                if (!exists("dat")) {dat<-x} else     {dat<-rbind(dat,x)}
                               }
 }
  dat$loc<-loc
  return(dat)
}

tvl_aa<-download_tweets(loc="tvl", range=30,srch_st)
tvl_aa<-tvl_aa[-which(duplicated(tvl_aa$text)),]

不同的搜索是识别非重复的推文:

 table(tvl_aa$srch)

 tvl_a  tvl_e  tvl_i tvl_pd 
 27      1     36    535 

必须有更高效(和优雅?)的方式吗?我尝试使用术语列表进行搜索,但无法解决冗余问题。

非常感谢任何建议,谢谢。

1 个答案:

答案 0 :(得分:0)

可帮助您使用%in%功能提取元音。我认为你应该只打一个推文。

text <- c("I hope that, and I really mean this, that this example helps.")

split <- tolower(strsplit(text, "")[[1]])
chars <- subset(split, split %in% c("a","e","i","o","u",".",","))

table(chars)

输出:

chars
, . a e i o 
2 1 6 6 4 1

我也听说grep很有用。