Ive armeggiare intorno con una funzione di R, si entra nel testo di ricerca, il numero di siti di ricerca, e il raggio intorno ad ogni sito. Per esempio twitterMap("#rstats",10,"10mi")
Ecco il codice:
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")

Ci sono alcuni grandi problemi che ho incontrato che non sono sicuro di come affrontare. In primo luogo, come ha scritto il codice cerca 15 luoghi diversi generati casualmente, queste posizioni sono generati da una distribuzione uniforme della massima longitudine est negli Stati Uniti al massimo ad ovest, e la latitudine più a nord al più a sud. Ciò includerà le posizioni non negli stati uniti, ad esempio appena ad est del lago del bosco del Minnesota in Canada. Mi piacerebbe una funzione che controlli a caso per vedere se la posizione generata è negli Stati Uniti e scartarla se non lo è. Ancora più importante, mi piacerebbe cercare migliaia di posizioni, ma a Twitter non piace e mi dà un 420 error enhance your calm
. Quindi forse è meglio cercare ogni poche ore e lentamente costruire un database ed eliminare i tweet duplicati. Infine, se si sceglie un argomento diffuso a distanza, R restituisce un errore come Error in function (type, msg, asError = TRUE) : transfer closed with 43756 bytes remaining to read
. Sono un po 'sconcertato su come aggirare questo problema.
è necessario fornire un '' geocode' per searchTwitter' da usare. Vedi la documentazione della biblioteca '? SearchTwitter'. –
vedo che si può fornire un geocode e il raggio in 'searchTwitter' ma che non produce un geocode per ogni tweet tirato. – iantist
ma avresti il geocode che hai fornito, giusto? con un raggio più piccolo potrebbe darti quello che ti serve? –