From 2b3f2726612c5913c14658dbe0abc60f2fd4e19d Mon Sep 17 00:00:00 2001 From: Kuiming Date: Sun, 13 Dec 2015 13:04:36 +0800 Subject: [PATCH 1/2] Modify getSymbols.SQLite 1. Comment out setting of column names because Data are not just "OHLC". 2. Order by first element of "db.fields". --- R/getSymbols.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/R/getSymbols.R b/R/getSymbols.R index 304dc807..7429077e 100644 --- a/R/getSymbols.R +++ b/R/getSymbols.R @@ -567,7 +567,7 @@ function(Symbols,env,return.class='xts', query <- paste("SELECT ", paste(db.fields,collapse=','), " FROM ",Symbols[[i]], - " ORDER BY row_names") + " ORDER BY ", db.fields[1]) rs <- DBI::dbSendQuery(con, query) fr <- DBI::fetch(rs, n=-1) #fr <- data.frame(fr[,-1],row.names=fr[,1]) @@ -578,9 +578,9 @@ function(Symbols,env,return.class='xts', } else { fr <- xts(fr[,-1],order.by=as.Date(as.numeric(fr[,1]),origin='1970-01-01')) } - colnames(fr) <- paste(Symbols[[i]], - c('Open','High','Low','Close','Volume','Adjusted'), - sep='.') + # colnames(fr) <- paste(Symbols[[i]], + # c('Open','High','Low','Close','Volume','Adjusted'), + # sep='.') fr <- convert.time.series(fr=fr,return.class=return.class) if(auto.assign) assign(Symbols[[i]],fr,env) From ca5c79599f8f5785a476e3c854d0c229d470af1b Mon Sep 17 00:00:00 2001 From: Kuiming Date: Mon, 14 Dec 2015 17:25:11 +0800 Subject: [PATCH 2/2] resolve problems of columns --- R/getSymbols.R | 29 ++++++++++++++++++----------- man/getSymbols.MySQL.Rd | 6 ++++-- man/getSymbols.SQLite.Rd | 6 ++++-- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/R/getSymbols.R b/R/getSymbols.R index 7429077e..b7fb0dbf 100644 --- a/R/getSymbols.R +++ b/R/getSymbols.R @@ -530,9 +530,10 @@ function(Symbols,env,return.class='xts', # getSymbols.SQLite {{{ "getSymbols.SQLite" <- function(Symbols,env,return.class='xts', + Date_col='row_names', db.fields=c('row_names','Open','High', 'Low','Close','Volume','Adjusted'), - field.names = NULL, + col.names = NULL, dbname=NULL, POSIX = TRUE, ...) { @@ -567,7 +568,7 @@ function(Symbols,env,return.class='xts', query <- paste("SELECT ", paste(db.fields,collapse=','), " FROM ",Symbols[[i]], - " ORDER BY ", db.fields[1]) + " ORDER BY ", Date_col) rs <- DBI::dbSendQuery(con, query) fr <- DBI::fetch(rs, n=-1) #fr <- data.frame(fr[,-1],row.names=fr[,1]) @@ -578,9 +579,12 @@ function(Symbols,env,return.class='xts', } else { fr <- xts(fr[,-1],order.by=as.Date(as.numeric(fr[,1]),origin='1970-01-01')) } - # colnames(fr) <- paste(Symbols[[i]], - # c('Open','High','Low','Close','Volume','Adjusted'), - # sep='.') + if (!is.null(col.names)){ + colnames(fr) <- paste(Symbols[[i]],col.names , sep = ".") + } + else { + colnames(fr) <- paste(Symbols[[i]],db.fields[db.fields!=Date_col] , sep = ".") + } fr <- convert.time.series(fr=fr,return.class=return.class) if(auto.assign) assign(Symbols[[i]],fr,env) @@ -595,9 +599,9 @@ function(Symbols,env,return.class='xts', # }}} # getSymbols.MySQL {{{ -"getSymbols.MySQL" <- function(Symbols,env,return.class='xts', +"getSymbols.MySQL" <- function(Symbols,env,return.class='xts',Date_col="date", db.fields=c('date','o','h','l','c','v','a'), - field.names = NULL, + col.names = NULL, user=NULL,password=NULL,dbname=NULL,host='localhost',port=3306, ...) { importDefaults("getSymbols.MySQL") @@ -631,16 +635,19 @@ function(Symbols,env,return.class='xts', if(verbose) { cat(paste('Loading ',Symbols[[i]],paste(rep('.',10-nchar(Symbols[[i]])),collapse=''),sep='')) } - query <- paste("SELECT ",paste(db.fields,collapse=',')," FROM ",Symbols[[i]]," ORDER BY date") + query <- paste("SELECT ",paste(db.fields,collapse=',')," FROM ",Symbols[[i]]," ORDER BY ",Date_col) rs <- DBI::dbSendQuery(con, query) fr <- DBI::fetch(rs, n=-1) #fr <- data.frame(fr[,-1],row.names=fr[,1]) fr <- xts(as.matrix(fr[,-1]), order.by=as.Date(fr[,1],origin='1970-01-01'), src=dbname,updated=Sys.time()) - colnames(fr) <- paste(Symbols[[i]], - c('Open','High','Low','Close','Volume','Adjusted'), - sep='.') + if (!is.null(col.names)){ + colnames(fr) <- paste(Symbols[[i]],col.names , sep = ".") + } + else { + colnames(fr) <- paste(Symbols[[i]],db.fields[db.fields!=Date_col] , sep = ".") + } fr <- convert.time.series(fr=fr,return.class=return.class) if(auto.assign) assign(Symbols[[i]],fr,env) diff --git a/man/getSymbols.MySQL.Rd b/man/getSymbols.MySQL.Rd index 2f225a34..f6aec081 100644 --- a/man/getSymbols.MySQL.Rd +++ b/man/getSymbols.MySQL.Rd @@ -14,8 +14,9 @@ further user contributed data tools. getSymbols.MySQL(Symbols, env, return.class = 'xts', + Date_col="date", db.fields = c("date", "o", "h", "l", "c", "v", "a"), - field.names = NULL, + col.names = NULL, user = NULL, password = NULL, dbname = NULL, @@ -31,9 +32,10 @@ getSymbols.MySQL(Symbols, \item{return.class}{ desired class of returned object. Can be xts, zoo, data.frame, ts, or its. (zoo)} + \item{Date_col}{ column name of date in database } \item{db.fields}{ character vector indicating names of fields to retrieve} - \item{field.names}{ names to assign to returned columns } + \item{col.names}{ names to assign to returned columns } \item{user}{ username to access database } \item{password}{ password to access database } \item{dbname}{ database name } diff --git a/man/getSymbols.SQLite.Rd b/man/getSymbols.SQLite.Rd index 6f7e79e6..e4b84a22 100644 --- a/man/getSymbols.SQLite.Rd +++ b/man/getSymbols.SQLite.Rd @@ -10,6 +10,7 @@ this function should \emph{NOT} be called directly. getSymbols.SQLite(Symbols, env, return.class = 'xts', + Date_col="row_names", db.fields = c("row_names", "Open", "High", @@ -17,7 +18,7 @@ getSymbols.SQLite(Symbols, "Close", "Volume", "Adjusted"), - field.names = NULL, + col.names = NULL, dbname = NULL, POSIX = TRUE, ...) @@ -27,8 +28,9 @@ getSymbols.SQLite(Symbols, symbol to be loaded } \item{env}{ where to create the objects } \item{return.class}{ desired class of returned object } + \item{Date_col}{ column name of date in database } \item{db.fields}{ character vector naming fields to retrieve } - \item{field.names}{ names to assign to returned columns } + \item{col.names}{ names to assign to returned columns } \item{dbname}{ database name } \item{POSIX}{ are rownames numeric } \item{\dots}{ additional arguments }