首页 > 解决方案 > 用于循环具有唯一值的字符串的 R 函数

问题描述

我正在做一个项目,我必须在相对较小的服务器上下载超过 1000 万条记录。因此,我不仅要下载整个数据集,还必须以较小的部分下载它。我正在尝试创建一个循环,该循环将根据日期调用批量数据。我习惯于在 Stata 中编码,您可以在其中使用“x”或字符串中的某些变体来调用本地。但是,我找不到在 R 中执行此操作的方法。下面是我正在使用的一小段代码。基本上,每当我尝试运行此“val”和“val2”时,都不会使用定义列表中的日期进行更新,因此输出的字面意思就像服务器试图在“val”和“val2”之间搜索,而不是在“20190101”和“20190301”之间。非常感谢任何有关如何解决此问题的建议!

x<-c(20190101, 20190301)
y<-c(20190301, 20190501)
foreach (val=x, val2=y) %do% {
     data<-DBI::dbGetQuery(myconn, "SELECT * FROM .... WHERE (DATE BETWEEN 'val' AND 'val2')")
}

标签: rstringloopsforeach

解决方案


有一个基本循环

x<-c(20190101, 20190301)
y<-c(20190301, 20190501)

data_all = c()

for(i in 1:length(x)){
  
  query = paste0("SELECT * FROM .... WHERE (DATE BETWEEN '",
  x[i],  "' AND '",  y[i], "')")
  
  data <- DBI::dbGetQuery(myconn, query)
  data_all = rbind(data_all, data)

}

推荐阅读