我开发了一个使用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
必须有更高效(和优雅?)的方式吗?我尝试使用术语列表进行搜索,但无法解决冗余问题。
非常感谢任何建议,谢谢。
答案 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
很有用。