2012-04-14 3 views
2

내가하고 싶은 일은 상당히 쉽지만 알아낼 수 없었습니다. 나는 그와 비슷한 것을 할 수 있다고 생각했다. hereadjustOHLC - 시세 문자의 문자 벡터를 반복하는 솔루션 필요

getSymbols에 의해 반환 된 xts OHLC 객체 인 시세의 문자 벡터가있다. 나는 분할에 대한 조정 문자의 각 종목을 통해 루프를 원하는 adjustOHLC에 기호를 통과 :

symbols = c("FCX", "SPY") 

for(symbol in symbols){ 
    return(adjustOHLC(symbol,adjust =c("split"), use.Adjusted=FALSE)) 
} 

adjustOHLC가하는 것 같습니다하지 잡아 변수 '기호'의 값 :

debug: div <- getDividends(symbol.name) 
Browse[2]> symbol.name 
[1] "symbol" 
Browse[2]> 
Error in download.file(paste(yahoo.URL, Symbol.name, "&a=", from.m, "&b=", : 
    cannot open URL 'http://ichart.finance.yahoo.com/table.csv?s=symbol&a=0&b=01&c=1970&d=3&e=14&f=2012&g=v&ignore=.csv' 
In addition: Warning message: 
In download.file(paste(yahoo.URL, Symbol.name, "&a=", from.m, "&b=", : 
    cannot open: HTTP status was '404 Not Found' 

for(symbol in symbols){ 
    return(adjustOHLC(get(symbol),adjust =c("split"), use.Adjusted=FALSE)) 
} 

debug: div <- getDividends(symbol.name) 
Browse[2]> symbol.name 
[1] "get(symbol)" 
Browse[2]> 
Error in download.file(paste(yahoo.URL, Symbol.name, "&a=", from.m, "&b=", : 
    cannot open URL 'http://ichart.finance.yahoo.com/table.csv?s=get(symbol)&a=0&b=01&c=1970&d=3&e=14&f=2012&g=v&ignore=.csv' 
In addition: Warning message: 
In download.file(paste(yahoo.URL, Symbol.name, "&a=", from.m, "&b=", : 
    cannot open: HTTP status was '404 Not Found' 
: 나는 get(symbols)를 사용하는 경우

나도 같은 결과를 얻을 수 (유사한 접근 방법은 내가이 게시물의 상단에 표시 링크에 사용)

나는 이것을 더 빠르게 만들기 위해 lapply을 사용할 수도 있다고 생각했지만 위의 문제를 먼저 생각하고있다.

lapply(symbols, function(x) adjustOHLC(x, adjust=c("split"), use.Adjusted=FALSE))

쉬운만큼 보인다 -이 그렇게 사소한 경우 내가 죄송합니다. 도움을 감사하십시오.

답변

3

x 인수는 xts 개체 여야합니다. 그래서, 그것을 얻으려면 get 사용해야합니다. 그러나 yahoo 티커 기호가 xts 개체 (이 경우 get(symbol))의 이름과 다른 경우 symbol.name 인수를 사용해야합니다. 또한, adjustOHLC는 getSymbols처럼 "auto.assign"을하지 않기 때문에 for 루프 내부에 값을 할당해야합니다.

symbols = c("FCX", "SPY") 
getSymbols(symbols, src='yahoo') 
for(symbol in symbols){ 
    assign(symbol,adjustOHLC(get(symbol, pos=.GlobalEnv), symbol.name=symbol, 
          adjust=c("split"), use.Adjusted=FALSE)) 
} 

당신이 lapply 사용하여 언급하기 때문에, 여기 당신이 그것을

adjusted.list <- lapply(symbols, function(x) { 
    adjustOHLC(get(x, pos=.GlobalEnv), symbol.name=x, adjust=c("split"), 
      use.Adjusted=FALSE) 
}) 
names(adjusted.list) <- symbols 
을 사용할 수있는 방법
관련 문제