2017-10-25 5 views
0

저는 R에서 신참입니다. 더 많은 주식을 다운로드하는 것에 관한 여러 게시물을 보았습니다. 그러나 이유 또는 이유로 제안 된대로 작동하지 않습니다. 나의 목적은 주식의 벡터를 다운로드하고 모든 주식에 대한 종가만을 포함하는 전체 xts 행렬을 생성하는 것입니다 (따라서 nobservations x 3 컬럼). 어쨌든 , 나는 제대로 작동하지 않는 기본 스크립트에서 시작하고 싶습니다 :R, 더 많은 주식을 검색하기위한 스크립트/함수

library(quantmod) 
ticker=c("KO","AAPL","^GSPC") 
for (i in 1:length(ticker)) { 
    simbol=as.xts(na.omit(getSymbols(ticker[i],from="2016-01-01",auto.assign=F))) 
    new=Cl(simbol) 
    merge(new[i]) 
} 

나를 난 그냥 변화에 필요할 때마다 호출 할 수있는 기능 (문자)를 작성하는 더 나은 것 다운로드 할 주식의 이름. 모든 사람에게 덕분에

+0

마지막 문장은 다른 사람들이 함수를 작성하기를 원하는 것처럼 들립니다. 스택 오버플로는 프로그래밍 요청 서비스가 아니며 사용자가 직접 코드를 작성하는 데 도움이되는 질문 및 답변 포럼입니다. 코드가 작동하지 않는 이유에 대한 자세한 정보로 질문을 업데이트하십시오. 오류 세부 정보 및 코드에 대한 특정 질문을 포함하십시오. 이전 시도가 효과가 없다면 더 자세히 설명하십시오. –

+0

아니요 다른 사람이 나를 대신하여 기능을 작성하는 것을 원하지 않지만 초보자로서 참으로 도움이 필요합니다. 어쨌든 스크립트로 해결했지만 여전히 "함수"명령으로 문제가 발생했습니다. Matlab에서 나는 미리 쓰여진 함수 (즉, 주식 가격을 검색하는 함수)를 호출하여 다른 스크립트에서 사용할 수 있습니다. 이 스크립트에서 필자는 내 기능의 이름 뒤에있는 주식의 이름을 바꾸기로되어있다. 나는 R에 대한 스크립트를 여기 (https://stackoverflow.com/questions/28337205/total-least-squares-regression-without-intercept-with-r)에서 찾았지만 ... 잘 작동하지 않습니다. . – Polar

답변

0

이것은 당신이 (XTS와 조작의 매우 흔한 종류 인) 함수 래퍼 원하는 것을 할 것입니다 방법입니다

ticker=c("KO","AAPL","^GSPC") 

collect_close_series <- function(ticker) { 
    # Preallocate a list to store the result from each loop iteration (Note: lapply is another alternative to a direct loop) 
    lst <- vector("list", length(ticker)) 
    for (i in 1:length(ticker)) { 
    symbol <- na.omit(getSymbols(ticker[i],from="2016-01-01",auto.assign = FALSE)) 
    lst[[i]] <- Cl(symbol) 
    } 
    # You have a list of close prices. You can combine the objects in the list compactly using do.call; this is a common "data manipulation pattern" with xts objects. 
    rr <- do.call(what = merge, lst) 
    rr 
} 

out <- collect_close_series(ticker) 

더 고급 (더 나은 코드 디자인) : 당신 각각의 기호 (이 아니라 함께 랩과 모든 기호에 전달하는 기능)을 처리하는 기능을 작성하여 청소기 코드를 작성하고 다음에 lapply를 실행할 수 있습니다 :

per_sym_close <- function(tick) { 
    symbol <- na.omit(getSymbols(tick,from="2016-01-01",auto.assign = FALSE)) 
    Cl(symbol) 
} 

out2 <- do.call(merge, lapply(X = ticker, FUN = per_sym_close)) 

이 같은 결과를 제공합니다.

희망적인 R 코드를 작성하는 데 도움이되기를 바랍니다.