yahoo에서 일부 주식 데이터를 가져올 예정이며 일간 범위를 고가 - 저가로 계산하고 싶습니다. 그런 다음 각 주식의 범위를 단일 xts 오브젝트에 넣으려고합니다. 아래 코드는이 작업을 수행하지만 나에게 너무 복잡하게 보입니다.quantmod에 lapply를 사용하면 xts 객체로 바로 갈 수 있습니까?
문제는 lapply로 시작됩니다. xts 객체 목록을 얻지 만 [[]]을 사용하여 개별 객체 "a layer down"을 참조해야합니다. 각 xts 객체를 따옴표 [i]로 참조 할 수 있다면 for 루프가 아닌 apply 함수를 계속 사용할 수 있습니다. lapply 대신 sapply를 사용하려고했지만 오류가 발생했습니다. "배열의 오류 (dim, dimnames = if (! (is [ 'dimnames'[1] 배열 길이와 같지 않음의 길이 "
또한 두 번째 for 루프에서 사용한 연습이 싫습니다. 범위가 아직 존재하지 않으므로 작성해야하지만이 작업을 수행해야합니다. 방법은 루프의 목적을 물리 칠 것 같다. 더 좋은 방법이 있나요? 나는 또한 내가 그 중 하나의 좋은 방법이 아닙니다 알고 빈 XTS 개체를 만들지 않도록하고 싶습니다.
require(quantmod)
tickers <- c("ERX", "EWJ", "EWW", "EWZ", "FAS", "FAZ")
quotes <- lapply(tickers,function(x) getSymbols(x, src="yahoo", from="2014-10-10", auto.assign=FALSE))
names(quotes) <- tickers
for (i in 1:length(quotes)){
quotes[[i]] <- quotes[[i]][,2] - quotes[[i]][,3]
colnames(quotes[[i]]) <- paste(names(quotes)[i], "Range")
}
for (i in 1:length(quotes)){
if (i == 1) {range <- quotes[[i]]}
else {range <- merge(range, quotes[[i]])}
}
감사합니다.
감사 여호수아. 당신이 만든 패키지는 매우 유용합니다. – mks212
@ user2926358 : 고마워,하지만 나는 quantmod를 만들지 않았다. 제프 라이언이 그랬어. –
공정한만큼, xts를위한 감사합니다! – mks212