2012-07-13 3 views
0

나는 시세표 목록을 뒤져보고 재무를 받고 내 바탕 화면의 폴더에있는 CSV 파일로 내 보내려합니다. 그러나, 나는 Quantmod 패키지의 viewFinancials()와 관련된 R의 오류로 인해 문제가 발생했습니다. 코드와 오류는 아래와 같습니다.Quantmod get/viewFinancials in Loop

그래서, 내 질문은 어떻게 내 루프가 제대로 실행되도록 금융 클래스의 개체로 변수를 할당 무엇입니까? 또는 누군가 다른 대안을 가지고 있다면, 나는 그것을 듣게 될 것입니다! viewFinancials에

오류 (co.f, 'BS', 'Q') : 여기서

오류 메시지이다 가 'X'가 타입이어야 '계좌'

tickers <- c('AAPL','ORCL','MSFT') 

for(i in 1:length(tickers)){ 

    co <- tickers[1] 
    #co.f <- paste(co,".f",sep='') #First attempt, was worth a try 

    co.f <- getFin(co, auto.assign=T) # automatically assigns data to "co.f" object 
    BS.q<-viewFinancials(co.f,'BS',"Q") # quarterly balance sheet 
    IS.q<-viewFinancials(co.f,"IS","Q") # quarterly income statement 
    CF.q<-viewFinancials(co.f,"CF","Q") # quarterly cash flow statement 
    BS<-viewFinancials(co.f,"BS","A") # annual balance sheet 
    IS<-viewFinancials(co.f,"IS","A") # annual income statement 
    CF<-viewFinancials(co.f,"CF","A") # annual cash flow statement 

    d<-Sys.Date() 

    combinedA <- rbind(BS,IS,CF) 
    combinedQ <- rbind(BS.q,IS.q,CF.q) 

    BSAfile <- paste('/Users/dedwards/Desktop/RFinancials/',d,' ',co,'_BS_A.csv',sep='') 
    BSQfile <- paste('/Users/dedwards/Desktop/RFinancials/',d,' ',co,'_BS_Q.csv',sep='') 
    write.csv(combinedA, file = BSAfile, row.names=TRUE) 
    write.csv(combinedQ, file = BSQfile, row.names=TRUE) 
} 
+0

'co.f'에 데이터를 할당하려면 'auto.assign = FALSE'을 사용해야합니다. – GSee

답변

1

co.f 실제로 재무 객체가 포함 된 작업 공간에서 객체의 이름을 포함합니다 : 여기에 내가 일하고 코드입니다 .

co.f <- getFin(co, auto.assign = FALSE) 

도 작동하고 아마 더 정직처럼 실제로 객체를 사용하려면이 get(co.f)

obj <- get(co.f) 
# now you can use obj where you were previously trying to use co.f 

를 호출 할 필요는 다른 방법이 보인다.

+0

감사합니다! 달리고있어. – Dedwards

0

루프를 작성하는 대신 tq_get() 함수에 여러 주식을 전달할 수있는 tidyquant 패키지를 고려해 볼 수 있습니다. tq_get(get = "financials")을 설정하면 여러 주식의 재무 정보를 다운로드 할 수 있습니다. 여기 예 :

library(tidyquant) 
c("FB", "AMZN", "NFLX", "GOOG") %>% 
    tq_get(get = "financials") 

이 연간 및 분기 별 기간 모두에서 중첩 된 모든 재무 제표 데이터의 데이터 프레임 (손익 계산서, 대차 대조표, 현금 흐름)을 반환합니다. unnest() 기능을 사용하여 레이어를 벗길 수 있습니다.

데이터를 저장해야하는 경우 write_csv() 기능을 사용하여 CSV에 쓸 수 있습니다.