0

我遇到了将多个查询的结果存储到列表中的问题。目前,我将先前执行的查询的结果存储在列表中。目前我找不到将结果存储到列表或类似内容的方法。

queryResults2 返回一个二维列表。

#Sample code for 2nd select
for(i in length(queryResults[[1]]){
    query_pd <-paste("Select price_date,price from price_master where stock_id ='",queryResults[[1]][i],"' order by price_date")
    queryResults2 <- dbGetQuery(conn, query_pd)
    #storing value here
}
4

1 回答 1

1

首先,不要担心整个“不要使用循环”的事情。以下是三个基本选项:

  1. for环形。基本模板是:

    result <- vector("list",length(queryResults[[1]])
    for (i in ...){
        #Do stuff
        result[[i]] <- something
    }
    
  2. lapply这里的基本格式是:

    lapply(seq_len(queryResults[[1]]),function(i) dbGetQuery(conn,paste(...)))
    

    您不一定需要该函数将查询和连接对象作为参数,如果它们存在于调用环境中,R 的作用域将能够找到它们。

  3. 将其全部作为一个带有IN子句的查询运行,然后再运行split

就个人而言,我尽量使用(3)。

于 2013-06-14T20:28:54.237 回答