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