我一直在修改 R 函数,您输入搜索文本、搜索站点的数量以及每个站点周围的半径。例如twitterMap("#rstats",10,"10mi")
这里的代码:
twitterMap <- function(searchtext,locations,radius){
require(ggplot2)
require(maps)
require(twitteR)
#radius from randomly chosen location
radius=radius
lat<-runif(n=locations,min=24.446667, max=49.384472)
long<-runif(n=locations,min=-124.733056, max=-66.949778)
#generate data fram with random longitude, latitude and chosen radius
coordinates<-as.data.frame(cbind(lat,long,radius))
coordinates$lat<-lat
coordinates$long<-long
#create a string of the lat, long, and radius for entry into searchTwitter()
for(i in 1:length(coordinates$lat)){
coordinates$search.twitter.entry[i]<-toString(c(coordinates$lat[i],
coordinates$long[i],radius))
}
# take out spaces in the string
coordinates$search.twitter.entry<-gsub(" ","", coordinates$search.twitter.entry ,
fixed=TRUE)
#Search twitter at each location, check how many tweets and put into dataframe
for(i in 1:length(coordinates$lat)){
coordinates$number.of.tweets[i]<-
length(searchTwitter(searchString=searchtext,n=1000,geocode=coordinates$search.twitter.entry[i]))
}
#making the US map
all_states <- map_data("state")
#plot all points on the map
p <- ggplot()
p <- p + geom_polygon( data=all_states, aes(x=long, y=lat, group = group),colour="grey", fill=NA )
p<-p + geom_point( data=coordinates, aes(x=long, y=lat,color=number.of.tweets
)) + scale_size(name="# of tweets")
p
}
# Example
searchTwitter("dolphin",15,"10mi")
我遇到了一些大问题,我不知道如何处理。首先,代码搜索 15 个不同的随机生成位置,这些位置是从美国东部最大经度到西部最大经度、最北纬到最南纬度的均匀分布生成的。这将包括不在美国的地点,比如加拿大明尼苏达森林湖以东。我想要一个随机检查生成的位置是否在美国的函数,如果不是则丢弃它。更重要的是,我想搜索数千个位置,但 twitter 不喜欢这样,并给了我一个420 error enhance your calm
. 所以也许最好每隔几个小时搜索一次,慢慢建立一个数据库,删除重复的推文。最后,如果一个人选择了一个远程流行的主题,R 会给出一个类似的错误Error in function (type, msg, asError = TRUE) :
transfer closed with 43756 bytes remaining to read
。我对如何解决这个问题有点困惑。