-4

我昨天问了这个问题并得到了回答,但我认为他们并没有真正理解我的问题。我需要从数据库中提取数据。但是用户提供了变量列表。我需要我的代码循环遍历每个请求的变量,提取与之关联的数据并将其放入 data.frame 中,以供分析。

f.extractVariables<-
  structure(function 
(dbPath,dbName,table,variables
   ){
# LOAD LIBRARIES
require(RODBC)
require(xlsx)

 setwd(dbPath)
 db <- odbcConnectAccess2007(dbName)

 #This was my idea on how to loop through the variable list but it won't run
 for (i in 1:length(variables))
  {
 dataCollection <- sqlQuery(db, 'SELECT table.variables[[i]]
                    FROM table;')
 }

#This piece was the solution I was given which runs but all it does is parrot back 
#the variable list it doesn't retrieve anything.
 variables=paste(variables,collapse=",")
 query<-paste(paste("SELECT",variables),
 "FROM table",sep='\n')
 cat(query)

odbcClose(db)
 }
 )
#And the user provided input looks something like this. I can change the way the
 #variable list comes in to make it easier.
            dbPath = 'z:/sites/'
    dbName = 'oysterSites.accdb'
    table  = 'tblDataSiteOysterSamplingPlan'
    variables= 'nwLon,nwLat,neLon,neLat'

    f.extractVariables(dbPath,dbName,table,variables)
4

1 回答 1

0

你认为你在用哪种语言编码?这不是 .NET...

删除这个

 for (i in 1:length(variables))
  {
 dataCollection <- sqlQuery(db, 'SELECT table.variables[[i]]
                    FROM table;')
 }

对于循环的所有循环,其中'SELECT table.variables[[i]] FROM table;'始终是相同的,并且会随着(至少我对您尝试做的事情的猜测)而改变

 for (i in 1:length(variables))
  {
 dataCollection <- sqlQuery(db, paste0('SELECT table.variables[[', i, ']]
                    FROM table;'))
 }

你说上面的行不通。没有必要继续审查您的代码,修复上述问题然后再回来

于 2013-11-26T14:36:41.420 回答