2013-11-25 4 views
-1

아래 함수를 작성 중입니다. 목적은 다른 함수에서 사용하기 위해 Access 데이터베이스에서 사용자가 제공 한 변수 목록을 가져 오는 것입니다. 사용자가 쉼표로 구분 된 목록을 제공하기를 바랍니다. 제공된 변수 목록을 반복하는 여러 가지 방법을 시도했지만 제대로 작동하지 않습니다. 내 for 루프에 문제가있다.데이터베이스에서 사용자가 제공 한 데이터를 가져 오는 중 R

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) 

답변

2

여기 루프를 사용할 필요가 없습니다. 당신은 paste를 사용하여 쿼리를 작성 할 수 있습니다 시도에 주석

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

아마 또한 가치 :

variables= c("nwLon", "nwLat", "neLon", "neLat") variables = paste(variables,collapse=",") 

는 그런 다음으로 쿼리를 작성 :

variables= "nwLon, nwLat, neLon, neLat" ## user input string 

것은 사용이 변수 목록을 제공하는 경우 이 솔루션을 사용하지 않아도 0 기반 인덱싱을 사용할 수 있습니다. – joran

+0

이제 데이터베이스의 데이터가 필요하다는 것을 분명히해야합니다. 사용자는 원하는 변수 목록을 제공하고 함수는 데이터를 검색합니다. 예를 들어, nwLon을 요청한 후에는 사용자가 명령 줄에 "nwLon"을 입력 할 수 있어야하며 데이터를 표시하거나 분석 또는 플로팅 할 준비가되어 있어야합니다. – user3009978

관련 문제