2013-09-01 3 views
3

for 루프를 통해 일련의 빈 xts 객체를 만들려고하는데 실패하고 있습니다.for 루프를 통해 빈 xts 객체를 만듭니다.

내가 만들고자하는 빈 XTS 객체의 이름을 포함하는 SYMBOL_vector라는 문자 벡터를 만들었습니다. 또한 심볼 SPY에 대한 데이터를 포함하여 getSymbols를 사용하여 일부 주식 시장 데이터를 다운로드했습니다. 결과적으로 SPY라는 XTS 객체가 존재합니다. 루프 코드

내는 다음과 같습니다

for (i in 1 : length(SYMBOL_vector)) { 
    SYMBOL_vector[i] <- as.xts(order.by = index(SPY)) 
} 

나는 다음과 같은 오류가 나타납니다 코드를 실행하면 : 그것은 피드백에 중요한 경우

Error in xts(x = NULL, order.by = x, ...) : formal argument "order.by" matched by multiple actual arguments

는, 오브젝트가 작성 빈 XTS 번을, 나는 각각의 루프를 작성하여 각각을 일일 리턴 데이터로 채울 것이다.

전 루프에 완전히 다른 접근 방식을 사용하는 것에 반대하지 않습니다 ...이 중 하나가 방금 빠르고 쉽습니다. 어떤 도움을 주셔서 미리 감사드립니다!

답변

0

@PHXtrader 당신이하려고하는 것은 캐릭터의 벡터에있는 요소를 당신이하고 싶은 것이 아니고 이해가되지 않는 xts 객체로 대체하는 것입니다. 이름을으로 지정하려면 '할당'기능 (? 지정)을 사용해야합니다. 코드의 다른 오류는 'xts'대신 'as.xts'를 사용한다는 것입니다. 이 장난감 예제를 살펴보십시오.

tickers <- c("AMZN","AAPL")   # this is a character object 
getSymbols("SPY",from="2013-09-01") # this is a xts object 

for (i in 1:length(tickers)) { 
    assign(tickers[i],xts(order.by = index(SPY))) 
} 

결과는 0과 함께 AMZN 및 AAPL이라는 2 xts 객체입니다.

>str(AAPL) 
An 'xts' object of zero-width 

> AAPL 
Data: 
numeric(0) 

Index: 
Date[1:9], format: "2013-09-03" "2013-09-04" "2013-09-05" "2013-09-06" "2013-09-09" ... 

나는 당신이 원하는 것을 달성하기 위해 더 안전한 방법은 (새로운 환경을 만들어 가끔 이상) 목록을 사용하는 것입니다 생각합니다. 위와 같이 객체를 생성하면 찾기 어렵고 디버그하기 어려운 버그가 발생하기 때문에 이러한 유형의 구조는 실수로 변수를 덮어 쓰거나 기타 많은 잠재적 오류를 유발할 수 있습니다. 다음 예는 루프를 방지하고 목록에서 빈 객체를 생성합니다 : 그것은 정말 "R 방법"아니다, 그러나, 당신은 단지 as.xts 대신 xts를 사용하는 경우

tickers <- c("AMZN","AAPL") 
mylist <- rep(as.list(xts(order.by = index(SPY))),2) # creates 2 empty xts-objects in list 
names(mylist) <- tickers 

> str(mylist) 
List of 2 
$ AMZN:An 'xts' object of zero-width 
$ AAPL:An 'xts' object of zero-width 
3

귀하의 코드가 작동한다 (또는 "quantmod 방법 ") 문제를 공격합니다.

library(quantmod) 
s <- c("SPY", "DIA", "QQQ") 
e <- new.env() # an empty environment to hold yahoo price data 
getSymbols(s, env=e) 
L <- eapply(e, dailyReturn) # a list of returns 
L$SPY 

당신은 아마 여기 중지 할 수 있습니다,하지만 당신이 원한다면, 당신은 환경에 목록을 변환 할 수 있습니다

이것이 고려하십시오. 당신이 정말로 당신이 ret 환경을 첨부 할 수 원하는 경우

ret <- as.environment(L) # an environment with xts objects of daily returns 
ls(ret) 
get("DIA", pos=ret) 

또는 나는이 대답을 좋아

attach(ret) # not recommended 
head(QQQ) 
#   daily.returns 
#2007-01-03 -0.0050621261 
#2007-01-04 0.0189639223 
#2007-01-05 -0.0047662279 
#2007-01-08 0.0006841505 
#2007-01-09 0.0050136737 
#2007-01-10 0.0117913832 
+0

(권장하지 않음). 그것은 내 자신의 문제를 해결했습니다! – Agarp

관련 문제