He estado jugando con una función R, ingrese el texto de búsqueda, el número de sitios de búsqueda y el radio alrededor de cada sitio. Por ejemplo twitterMap("#rstats",10,"10mi")
aquí está el código:
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")
Hay algunos grandes problemas que he encontrado que no estoy seguro de cómo hacer frente a. En primer lugar, tal como está escrito, el código busca 15 ubicaciones diferentes generadas aleatoriamente, estas ubicaciones se generan a partir de una distribución uniforme desde la longitud máxima este en los EE. UU. Hasta el máximo oeste, y la latitud más al norte hasta el extremo sur. Esto incluirá ubicaciones que no están en los Estados Unidos, por ejemplo, al este del lago de los bosques de Minnesota en Canadá. Me gustaría tener una función que verifique al azar si la ubicación generada está en EE. UU. Y descartarla si no lo está. Más importante aún, me gustaría buscar miles de ubicaciones, pero a Twitter no le gusta eso y me da un 420 error enhance your calm
. Entonces, quizás sea mejor buscar cada pocas horas y construir lentamente una base de datos y eliminar los tweets duplicados. Finalmente, si uno elige un tema remotamente popular, R da un error como Error in function (type, msg, asError = TRUE) : transfer closed with 43756 bytes remaining to read
. Estoy un poco desconcertado sobre cómo solucionar este problema.
es necesario proporcionar un '' geocode' para searchTwitter' de usar. Consulte la documentación de la biblioteca '? SearchTwitter'. –
Veo que puede proporcionar un código geográfico y un radio en 'searchTwitter' pero eso no produce un geocodificador para cada tweet extraído. – iantist
pero tendría el código geográfico que suministró, ¿verdad? con un radio más pequeño podría darle lo que necesita? –