将用户提供的数据从数据库中取出并输入R

将用户提供的数据从数据库中取出并输入R,r,R,我正在创建下面的函数。其目的是从Access数据库中获取用户提供的变量列表,以便在其他函数中使用。我希望用户提供一个用逗号分隔的列表。我尝试了几种不同的方法来循环提供的变量列表,但无法使其正确运行。我的for循环有问题 f.extractVariables<- structure(function (dbPath,dbName,table,variables ){ # LOAD LIBRARIES require(RODBC) require(xlsx) setwd(dbPa

我正在创建下面的函数。其目的是从Access数据库中获取用户提供的变量列表,以便在其他函数中使用。我希望用户提供一个用逗号分隔的列表。我尝试了几种不同的方法来循环提供的变量列表,但无法使其正确运行。我的for循环有问题

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

setwd(dbPath)
db <- odbcConnectAccess2007(dbName)

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

odbcClose(db)
)
}, ex=function(){
    #Positive Test to retrieve specified variables from specified location
    dbPath = 'z:/sites/'
    dbName = 'oysterSites.accdb'
    table  = 'tblDataSiteOysterSamplingPlan'
    variables= (nwLon, nwLat, neLon, neLat)

f.extractVariables这里不需要使用循环。您可以使用粘贴来生成查询:

variables= "nwLon, nwLat, neLon, neLat"  ##  user input string 
如果使用,请列出一个变量:

variables= c("nwLon", "nwLat", "neLon", "neLat")
variables = paste(variables,collapse=",")
然后将查询构建为:

query <- paste(paste("SELECT" ,variables),
"FROM table",sep='\n')
cat(query)
# SELECT nwLon, nwLat, neLon, neLat
# FROM table

query可能也值得对使用基于0的索引的尝试发表评论,尽管此解决方案不需要这样做。我现在意识到我需要澄清我需要数据库中的数据。用户提供所需变量的列表,函数检索数据。例如,在请求nwLon后,用户应该能够在命令行中键入“nwLon”,并且数据应该是可见的,可以进行分析或打印。