저는 R에서 완전한 초보자입니다. 몇 시간 동안 getSymbols를 사용하여 현재 기업에 대한 기록 데이터를 S & P500에 다운로드하고 싶습니다. 분명히 일부 기업은 주어진 기간에 존재하지 않았고 R은 다음 시세 표시기에 대한 데이터 다운로드를 중단합니다. 데이터가 존재하지 않는 경우 getSymbols가 단순히 시세표를 생략 할 수있게하는 방법이 있습니까? 그 기간 동안 S & P 500 목록을 얻는 것이 훨씬 쉽지만, 불행히도 무료는 아닙니다.getSymbols의 시세 표시를 생략하는 quantmod
답변
이 같은 sapply
내 try
를 사용할 수 있습니다
library(quantmod)
WoW <- new.env()
##
sapply(SiP, function(x){
try(
getSymbols(
x,
from=as.Date("2001-01-01"),
to=as.Date("2007-01-01"),
env=WoW),
silent=TRUE)
})
오류가 (원하는 경우 당신은 아마이 문제를 완화 할 수) 콘솔에 인쇄 할 수 있습니다,하지만 오류를 생성하지 않는 시세는 여전히 데이터를 생성합니다 :
R> ls(WoW)
[1] "AA" "AEE" "AEP" "AES" "AP" "ARG" "ATI" "AVY" "BLL" "CF" "CMS" "CNP" "CTL" "D" "DOW" "DTE" "DUK" "ECL" "ED" "EIX"
[21] "EMN" "ETR" "EXC" "FCX" "FE" "FMC" "FTR" "GAS" "IFF" "IP" "LVLT" "MON" "MOS" "MWV" "NEE" "NEM" "NI" "NRG" "NU" "NUE"
[41] "OI" "PCG" "PEG" "PNW" "POM" "PPG" "PPL" "SCG" "SO" "SRE" "T" "TE" "TEG" "VZ" "WEC" "WIN" "XEL"
##
R> length(ls(WoW))
[1] 57
R> length(SiP)
[1] 59
는 그래서 sapply(...)
성공적으로 다른 57
여기에서 객체는 사용자가 선호하는 방법을 통해 WoW
내에서 액세스 할 수 있습니다.
R> with(WoW, chartSeries(ARG))
데이터 :가
SiP=c('AES','GAS','AEE','AEP','CNP', 'CMS','ED','D',
'DTE','DUK','EIX', 'ETR','EXC','FE','TEG',
'NEE','NI', 'NU','NRG','PCG','POM','PNW','PPL',
'PEG','SCG','SRE','SO','TE','WEC', 'XEL','T',
'CTL','FTR','LVLT','VZ', 'WIN','AP','ARG',
'AA','ATI','AVY', 'BLL','CF','DOW','D',
'EMN','ECL', 'FMC','FCX','IP','IFF','LYB',
'MWV', 'MON','MOS','NEM','NUE','OI','PPG')
그것은 작동합니다. 고맙습니다! –
대단히 환영합니다. 기회가 생기면 [이 질문에 대한 답변]을 읽어보십시오. (http://stackoverflow.com/questions/5963269/how-to-make-a -great-r-reproducible-example) - 문제에 대해 제공 할 수있는 정보가 많을수록 다른 사용자가 당신을 도울 수 있습니다. – nrussell
문제는 야후 임에도 불구 stockSymbols()
생성 시세 목록의 구두점이며, getSymbols()
사용에서 404을 수득 야후는 URL에 구두점을 사용하지 않기 때문에 getSymbols()
은 시도합니다. 긁다.
예 : stockSymbols()
은 "AA-P"기호를 가져오고 이것을 getSymbols()
에 전달하려고 시도하면 404'd가 표시됩니다. stockSymbols()
에서 "AA-P"로 표시된 시세표가 있음에도 불구하고 "AA-P"가 아닌 "AA"를이 주식에 사용합니다.
stockSymbols()
에 의해 생성 된 시세표 목록을 지우는 코드를 작성하여 getSymbols()
이 오류를 생성하지 않도록하십시오. 이렇게하면 선호 기호와 구두점이 포함 된 기호가 제거되므로 결과는 일반적인 주식 문제에서 비롯됩니다. 여기
library(quantmod)
symbols = stockSymbols()
symbols = symbols[,1]
for (i in seq_along(symbols)) {
hyph = gregexpr(pattern = "-", symbols[i])
per = gregexpr(pattern = "[.]", symbols[i])
if (hyph[[1]][1] > 0) {
symbols[i] = substr(symbols[i], 1, hyph[[1]][1] - 1)
} else if (per[[1]][1] > 0) {
symbols[i] = substr(symbols[i], 1, per[[1]][1] - 1)
}
}
symbols = unique(symbols)
당신은 내부 처리 오류을 담당 tidyquant
패키지를 시도 할 수 있습니다 404
for (i in seq_along(symbols)){
tryit <- try(getSymbols(symbols[i],from="2016-01-01", src='yahoo'))
if(inherits(tryit, "try-error")){
i <- i+1
}
else {
stock = getSymbols(symbols[i], from="2016-01-01", src = "yahoo", auto.assign = FALSE)
stocks[[i]] = as.data.frame(stock)
}
}
모든 주식 데이터를 얻을 건너 getSymbol()를 사용하는 몇 가지 코드입니다. 또한 for-loops 또는 tryCatch
문을 필요로하지 않으므로 상당한 양의 코드를 저장할 수 있습니다. tq_get()
함수는 주가를 얻는 책임이 있습니다. complete_cases
인수를 사용하여 오류 처리 방법을 조정할 수 있습니다.complete_cases = TRUE
와
예 : 반환 중첩 된 데이터 프레임 : 자동으로 "나쁜 사과"complete_cases = FALSE
와
library(tidyquant)
# get data with complete_cases = TRUE automatically removes bad apples
c("AAPL", "GOOG", "BAD APPLE", "NFLX") %>%
tq_get(get = "stock.prices", complete_cases = TRUE)
#> Warning in value[[3L]](cond): Error at BAD APPLE during call to get =
#> 'stock.prices'. Removing BAD APPLE.
#> # A tibble: 7,680 × 8
#> symbol date open high low close volume adjusted
#> <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 AAPL 2007-01-03 86.29 86.58 81.90 83.80 309579900 10.85709
#> 2 AAPL 2007-01-04 84.05 85.95 83.82 85.66 211815100 11.09807
#> 3 AAPL 2007-01-05 85.77 86.20 84.40 85.05 208685400 11.01904
#> 4 AAPL 2007-01-08 85.96 86.53 85.28 85.47 199276700 11.07345
#> 5 AAPL 2007-01-09 86.45 92.98 85.15 92.57 837324600 11.99333
#> 6 AAPL 2007-01-10 94.75 97.80 93.45 97.00 738220000 12.56728
#> 7 AAPL 2007-01-11 95.94 96.78 95.10 95.80 360063200 12.41180
#> 8 AAPL 2007-01-12 94.59 95.06 93.23 94.62 328172600 12.25892
#> 9 AAPL 2007-01-16 95.68 97.25 95.45 97.10 311019100 12.58023
#> 10 AAPL 2007-01-17 97.56 97.60 94.82 94.95 411565000 12.30168
#> # ... with 7,670 more rows
예를 제거합니다. 두 경우 모두
library(tidyquant)
# get data with complete_cases = FALSE returns a nested data frame
c("AAPL", "GOOG", "BAD APPLE", "NFLX") %>%
tq_get(get = "stock.prices", complete_cases = FALSE)
#> Warning in value[[3L]](cond): Error at BAD APPLE during call to get =
#> 'stock.prices'.
#> Warning in value[[3L]](cond): Returning as nested data frame.
#> # A tibble: 4 × 2
#> symbol stock.prices
#> <chr> <list>
#> 1 AAPL <tibble [2,560 × 7]>
#> 2 GOOG <tibble [2,560 × 7]>
#> 3 BAD APPLE <lgl [1]>
#> 4 NFLX <tibble [2,560 × 7]>
- 1. X 축의 라인 및 시세 표시를 제거하십시오.
- 2. Quantmod R에 ... 다운로드 재고 데이터 R의 Quantmod 패키지에서
- 3. 블랙 베리 디스플레이에 시세 표시기를 붙이십시오
- 4. quantmod 3d 그래픽
- 5. quantmod :: chart_Series() 버그?
- 6. quantmod - getSymbols.MySQL 형식
- 7. R quantmod : getFinancials
- 8. multiple_chart of quantmod 패키지
- 9. CSV 파일에 Quantmod 사용하기
- 10. quantmod 연결 오류의 getOptionChain
- 11. BANKNIFTY 데이터 quantmod 다운로드
- 12. quantmod :: chart_Series에 수직선 추가
- 13. API를 통해 주식 시세 표시기에 시세 표시기를 사용할 수 있습니까?
- 14. 끝없는 수평 jQuery 시세
- 15. 페이드 시세 버그
- 16. CSS3/HTML5/jQuery를 - 시세
- 17. Qmodmod의 시세 목록을 R
- 18. 이스케이프 MySQL의 시세
- 19. 라이브 스크롤 주식 시세
- 20. 드루팔 6 조회수 시세
- 21. Google 금융 주식 시세
- 22. 인라인 이미지, 시세 등
- 23. 주식 시세 표시기
- 24. R : Quantmod - getsymbols.csv 파일 형식?
- 25. Quantmod get/viewFinancials in Loop
- 26. quantmod/xts에 요인 열을 추가하십시오.
- 27. quantmod 패키지에서 chart_Series()에 액세스하기
- 28. 다른 대체 Quantmod ZigZag 오버레이
- 29. 경고 메시지를 겹쳐 쓰는 quantmod
- 30. QuantMod/tseries monthlyReturn with dividend
[시도하십시오]에 대한 도움말 파일 (http://stat.ethz.ch/R-manual/R-devel/library/base/html/try.html) – nrussell
불행히도 그것은 ' 일하지 마라. 오류 메시지없이 경고 만받습니다. 나는 이유를 모른다. 또한 tryCatch를 시도했지만 상태를 유지하는 방법을 생각할 수 없었습니다. –
작동하지 않는 코드를 포함하십시오. – nrussell