使用2个sqlquerys在R中循环

使用2个sqlquerys在R中循环,sql,r,Sql,R,我试图通过在SQL中调用一个存储过程,运行一个回归,然后将结果放入SQL中的一个表中,从而在R中运行一个循环。存储的进程使用一个名为DiagCd的参数,如果我输入一个单独的DiagCd,它会识别它并提取相关数据。在它拉进来之后,我运行回归并插入到表中没有问题。但是,一旦我尝试对多个DiagCD运行此操作,它将无法识别正在使用的代码 我从连接到数据源开始 con <- odbcConnect("RViper", uid="jzinnel") con#设置连接 一个sqlQuery行让我困惑

我试图通过在SQL中调用一个存储过程,运行一个回归,然后将结果放入SQL中的一个表中,从而在R中运行一个循环。存储的进程使用一个名为DiagCd的参数,如果我输入一个单独的DiagCd,它会识别它并提取相关数据。在它拉进来之后,我运行回归并插入到表中没有问题。但是,一旦我尝试对多个DiagCD运行此操作,它将无法识别正在使用的代码

我从连接到数据源开始

con <- odbcConnect("RViper", uid="jzinnel")
con
#设置连接

一个
sqlQuery
行让我困惑。是不是类似于
数据我不确定。这个[数据我不知道您使用的是什么sql方言,但在编写过程中,MDIAGD将作为未知实体传递。使用sprintf like
data尝试您的建议时,它不喜欢%d并给出了其他建议,但当我找到一个有效的建议时,它确实通过了循环,但没有给出其中的所有信息。是否尝试尝试使用它有一点。@mlt谢谢你的帮助。结果是[data]
codes <- sqlQuery(con,"select distinct diagcd from Table where DiagPosition = 1")
 for (i in 1:4)
{
  # Get DiagCd to for this iteration
  mDiagCd <- codes[i]

  # Get Data to run Regression on
  data<-sqlQuery(con, "R_DiagnosisCodes mDiagCd")

  # Run Regression
  Reg <- lm(Service~Zip+State+Gender+Age+Height+Weight,data)

  # Save Data
  estimate.table <- cbind("Estimate" = coef(Reg))
  DiagCd <- data$DiagCd[1]
  data1 <- data.frame(t(estimate.table <- cbind("Estimate" = coef(Reg))),row.names = DiagCd)
  sqlSave(con, data1, tablename='Table2', append = TRUE, rownames = 'DiagCd', colnames = FALSE)
}
# Setup Connection
con <- odbcConnect("name", uid="me")
conn <- odbcConnect("name", uid="me")
# Get all codes
codes2 <- sqlFetch(conn, "codes")
x <- sapply(codes2, is.factor)
codes2[x] <- lapply(codes2[x], as.character)

# Loop through codes 
for (i in 1:978)
{
  # Get DiagCd to for this iteration
  mDiagCd <- codes2$DiagCd[i]

  # Get Data to run Regression
  data<-sqlQuery(con, sprintf("storedproc%s", mDiagCd))

  # Run Regression
  Reg <- lm(TotalServiceDays~Zip+State+Gender+Age+Height+Weight,data)

  # Create to table
  estimate.table <- cbind("Estimate" = coef(Reg))
  DiagCd <- data$DiagCd[1]
  data1 <- data.frame(t(estimate.table <- cbind("Estimate" = coef(Reg))),row.namesDiagCd)
sqlSave(conn, data6, tablename='table', append = TRUE, rownames = 'DiagCd', colnames = FALSE)
}

#Close channels
odbcClose(con)
odbcClose(conn)