我想每小时通过包“ gtrendsR”提取Google趋势数据,我试图使用Sys.sleep()函数设置计时器,但是,我每小时都无法下载它。因此,如何纠正我的代码以便每小时获取一次数据。非常感谢!
Sys.setlocale("LC_ALL", "English")
Keywords = c("google", "twitter")
for (k in Keywords) {
res = NULL
temp_1 <- gtrends(k, geo = "US",time = "all")
temp_2 <- temp_1$interest_over_time
res <- rbind(res, temp_2)
rm(temp_1,temp_2)
res <- select (res, c(date, hits))
Sys.setlocale(category = "LC_ALL", locale = "cht")
names(res)[2]<- k
xfilepath = paste("C:/Users/Peter/Desktop/",k,".csv",sep="")
write.csv(res, file = xfilepath, row.names=FALSE)
}
答案 0 :(得分:1)
Sys.sleep()
应该可以正常工作,并且没有错误代码,很难准确地告诉您它为什么会失败。但是,我建议使用另一种方法。
later
软件包是一个简单而实用的实用程序软件包,用于执行代码。它采用不带任何参数的函数,并在设置的延迟下运行它。例如,您可以使用:
library("gtrendsR")
library("later")
library("data.table") #for as.ITime
Sys.setlocale("LC_ALL", "English")
Keywords = c("google", "twitter")
#Set delay. Here for 5 seconds
delay <- as.ITime("00:00:05")
Interrupt <- FALSE
extractGoogle <- function(){
for (k in Keywords) {
res = NULL
temp_1 <- gtrends(k, geo = "US",time = "all")
temp_2 <- temp_1$interest_over_time
res <- rbind(res, temp_2)
rm(temp_1,temp_2)
res <- select (res, c(date, hits))
Sys.setlocale(category = "LC_ALL", locale = "cht")
names(res)[2]<- k
xfilepath = paste("C:/Users/Peter/Desktop/",k,".csv",sep="")
write.csv(res, file = xfilepath, row.names=FALSE)
}
#Execute once again later
if(isFALSE(Interrupt))
later(extractGoogle, delay = delay)
}
#Run the function until Interrupt is set to TRUE or session closes
extractGoogle()
这使您可以手动设置延迟,将“延迟”更改为秒数。 as.ITime
simple允许您以简单格式指定秒数。然后可以通过更改全局变量进一步延迟或破坏循环。