2014-12-09 4 views
0

, 당신은 주가 데이터를 다운로드 할 수 있습니다 그리고이 잘 작동합니다. AAPL 또는 SBUX을 입력하여 재고 데이터에 액세스 할 수 있습니다. 예를 들어Quantmod R에 ... 다운로드 재고 데이터 R의 Quantmod 패키지에서

> head(AAPL) 
      AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted 
2007-01-03  86.29  86.58 81.90  83.80 309579900   11.34 
2007-01-04  84.05  85.95 83.82  85.66 211815100   11.59 
2007-01-05  85.77  86.20 84.40  85.05 208685400   11.51 
2007-01-08  85.96  86.53 85.28  85.47 199276700   11.56 
2007-01-09  86.45  92.98 85.15  92.57 837324600   12.52 
2007-01-10  94.75  97.80 93.45  97.00 738220000   13.12 

...이 방법으로 좋은 통계를 많이 낼 수 있습니다.

하지만 my_portfolio을 변경하는 경우, "IBM""AAPL"를 대체하여 말하기 때문에이 불편은, 그때의 나중에 스크립트 '의 IBM와의'의 AAPL 이후의 모든 발생을 변경해야합니다.

내 질문 : 이 어떻게 명시 적으로 두 번째 AAPLSBUX를 입력 할 필요없이 getSymbols에서 얻은 my_portfolio와 관련된 다운로드 된 데이터를 찾을 수 있습니까?

+1

'? getSymbols'에서 보여준 것처럼 환경에 놓습니다. –

답변

1

나는 이런 식으로 할 의향이 될 것입니다 :

library(quantmod) 
my_portfolio <- c("AAPL", "SBUX") 
stocks <- lapply(my_portfolio,getSymbols,auto.assign=FALSE) 
names(stocks) <- my_portfolio 
# access the data 
head(stocks[[my_portfolio[1]]]) 
#   AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted 
# 2007-01-03  86.29  86.58 81.90  83.80 309579900   11.34 
# 2007-01-04  84.05  85.95 83.82  85.66 211815100   11.59 
# 2007-01-05  85.77  86.20 84.40  85.05 208685400   11.51 
# 2007-01-08  85.96  86.53 85.28  85.47 199276700   11.56 
# 2007-01-09  86.45  92.98 85.15  92.57 837324600   12.52 
# 2007-01-10  94.75  97.80 93.45  97.00 738220000   13.12 

그래서이 주식 가격을 포함 XTS 객체의 이름 목록을 생성합니다. 목록 요소는 포트폴리오의 주식과 이름이 같습니다.

불행하게도, 열 이름은 여전히 ​​주식 특정 (예를 들어, AAPL.Close보다는 Close),하지만 당신은 quantmod에서, 예를 들어, 사용 Cl(...) 기능을 그 문제를 극복 할 수 있습니다.

+1

'simplify = FALSE'와 함께'sapply'를 사용하면'names (stocks) <- my_portfolio' 라인을 필요로하지 않고 동일한 결과를 얻을 수 있습니다. 결과를리스트로 얻는 또 다른 방법은 다음과 같습니다. getSymbols (my_portfolio, env = e <- new.env()); as.list (e) [my_portfolio]' – GSee