【发布时间】:2016-04-15 07:47:20
【问题描述】:
我正在编写代码以从联合国数据库 Uncomtrade 获取数据。因为数据库的使用限制为 100 次查询/小时,所以我需要花点时间。 我想用 tryCatch 编写代码:
- 每次出现最大限制错误时自动设置程序超时
- 如果出现连接错误,则重新运行 i、j 和 k 的当前级别
虽然我当前的代码仍然有效,但我也想学习如何使用 tryCatch 还有一种方法可以摆脱 for 循环。这里可以使用apply family功能吗? 谢谢大家
n=0
a<-c()
for (i in (1996:2014)) {
for (j in c("0301","0302","0303","0304","0305","0306","0307","0308")) {
for (k in c("704","116","360","418","458","104","608","702","764")) {
s2<-paste(i,j,k,sep="")
a<-c(a,s2)
print (s2)
n<-n+1
if(n<=100) {
s1 <- get.Comtrade(r=k, ps=i, rg="2", cc=j, fmt="csv",px="H0")
Sys.sleep (1)
s1<-do.call(rbind.data.frame,s1)
library(foreign)
write.dta(s1,file=paste("D:/unTrade/",s2,".dta"))
}
else {
print(n)
print(s2)
print("reset here")
n=0
Sys.sleep(3610)
}
}
}
}
【问题讨论】: