【问题标题】:Getting user provided data out of a database and into R [closed]将用户提供的数据从数据库中获取到 R [关闭]
【发布时间】:2013-11-25 16:12:21
【问题描述】:

我正在创建下面的函数。目的是从 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)

【问题讨论】:

    标签: r


    【解决方案1】:

    这里不需要使用循环。您可以使用paste 构建您的查询:

    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
    

    【讨论】:

    • 可能还值得评论尝试使用基于 0 的索引,即使此解决方案不需要它。
    • 我现在意识到我需要澄清我需要来自数据库的数据。用户提供他们想要的变量列表,函数检索数据。例如,在请求 nwLon 后,用户应该能够在命令行中键入“nwLon”,并且该数据应该是可见的,可以用于分析或绘图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多