getSymbols and using lapply, Cl, and merge to extract close prices

Posted by algotr8der on Stack Overflow See other posts from Stack Overflow or by algotr8der
Published on 2011-04-07T00:40:37Z Indexed on 2012/08/31 3:38 UTC
Read the original article Hit count: 311

Filed under:
|
|
|

I've been messing around with this for some time. I recently started using the quantmod package to perform analytics on stock prices.

I have a ticker vector that looks like the following:

> tickers 
 [1] "SPY" "DIA" "IWM" "SMH" "OIH" "XLY" "XLP" "XLE" "XLI" "XLB" "XLK" "XLU" "XLV"    
[14] "QQQ"   
> str(tickers)   
 chr [1:14] "SPY" "DIA" "IWM" "SMH" "OIH" "XLY" "XLP" "XLE" ...   

I wrote a function called myX to use in a lapply call to save prices for every stock in the vector tickers. It has the following code:

myX <- function(tickers, start, end) { 
require(quantmod) 
getSymbols(tickers, from=start, to=end) 
} 

I call lapply by itself

library(quantmod) lapply(tickers,myX,start="2001-03-01", end="2011-03-11")

> lapply(tickers,myX,start="2001-03-01", end="2011-03-11") 
[[1]] 
[1] "SPY" 

[[2]] 
[1] "DIA" 

[[3]] 
[1] "IWM" 

[[4]] 
[1] "SMH" 

[[5]] 
[1] "OIH" 

[[6]] 
[1] "XLY" 

[[7]] 
[1] "XLP" 

[[8]] 
[1] "XLE" 

[[9]] 
[1] "XLI" 

[[10]] 
[1] "XLB" 

[[11]] 
[1] "XLK" 

[[12]] 
[1] "XLU" 

[[13]] 
[1] "XLV" 

[[14]] 
[1] "QQQ" 

That works fine. Now I want to merge the Close prices for every stock into an object that looks like

#            BCSI.Close WBSN.Close NTAP.Close FFIV.Close SU.Close 
# 2011-01-03      30.50      20.36      57.41     134.33    38.82 
# 2011-01-04      30.24      19.82      57.38     132.07    38.03 
# 2011-01-05      31.36      19.90      57.87     137.29    38.40 
# 2011-01-06      32.04      19.79      57.49     138.07    37.23 
# 2011-01-07      31.95      19.77      57.20     138.35    37.30 
# 2011-01-10      31.55      19.76      58.22     142.69    37.04 

Someone recommended I try something like the following:

ClosePrices <- do.call(merge, lapply(tickers, function(x) Cl(get(x))))

However I tried various combinations of this without any success. First I tried just calling lapply with Cl(x)

>lapply(tickers,myX,start="2001-03-01", end="2011-03-11") Cl(myX)))

> lapply(tickers,myX,start="2001-03-01", end="2011-03-11") Cl(x)))
Error: unexpected symbol in "lapply(tickers,myX,start="2001-03-01", end="2011-03-11") Cl"
> 
> lapply(tickers,myX(x),start="2001-03-01", end="2011-03-11") Cl(x)))
Error: unexpected symbol in "lapply(tickers,myX(x),start="2001-03-01", end="2011-03-11") Cl"
> 
> lapply(tickers,myX(start="2001-03-01", end="2011-03-11") Cl(x)
Error: unexpected symbol in "lapply(tickers,myX(start="2001-03-01", end="2011-03-11") Cl"
> lapply(tickers,myX(start="2001-03-01", end="2011-03-11") Cl(x))
Error: unexpected symbol in "lapply(tickers,myX(start="2001-03-01", end="2011-03-11") Cl"
>

Any guidance would be kindly appreciated.

© Stack Overflow or respective owner

Related posts about r

    Related posts about merge