2016-01-25 5 views
1

Я пытаюсь написать короткий отчет, используя , где я бы хотел скачать рыночные данные из yahoo, используя функцию getSymbolds пакета quantmod.Ошибка использования getSymbols в Rmarkdown

--- 
title: "TEST" 
author: "TEST" 
date: "Monday, January 25, 2016" 
output: html_document 
--- 
```{r, echo=FALSE} 
require(quantmod) 
prices = invisible(getSymbols("^GDAXI", return.class = "xts", auto.assign=FALSE)) 
cat(getwd()) 
rets = na.omit(diff(log(prices[,4]))) - mean(na.omit(diff(log(prices[,4])))) 
plot(rets['2015/2016']) 
``` 

Однако вызов prices = invisible(getSymbols("^GDAXI", return.class = "xts", auto.assign=FALSE)) не работает, и я получаю сообщение об ошибке:

Quitting from lines 8-13 (Preview-1a04527111.Rmd) 
Error in download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m, : 
    cannot open URL 'http://ichart.finance.yahoo.com/table.csv?s=^GDAXI&a=0&b=01&c=2007&d=0&e=25&f=2016&g=d&q=q&y=0&z=^GDAXI&x=.csv' 
Calls: <Anonymous> ... getSymbols -> do.call -> getSymbols.yahoo -> download.file 

Execution halted 

При запуске R кода построчно в обычном режиме R, то я получаю ожидаемые результаты. Есть ли известная проблема с getSymbols и ?

Мои sessionInfo() является

R version 3.1.3 (2015-03-09) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] quantmod_0.4-5  TTR_0.23-0   xts_0.9-7   zoo_1.7-12   stochvol_1.2.2  coda_0.18-1   
[7] XLConnect_0.2-11 XLConnectJars_0.2-9 plyr_1.8.3   reshape_0.8.5  svDialogs_0.9-57 svGUI_0.9-55  
[13] RODBC_1.3-12  

loaded via a namespace (and not attached): 
[1] digest_0.6.8 grid_3.1.3  htmltools_0.2.6 lattice_0.20-30 Rcpp_0.12.1  rJava_0.9-7  rmarkdown_0.9.2 tools_3.1.3  
[9] yaml_2.1.13  

EDIT после комментария: с помощью setInternet2 (использование = TRUE) сделал его работу. Следующие работы - даже в настройках безопасности моей компании.

--- 
title: "TEST" 
author: "TEST" 
date: "Monday, January 25, 2016" 
output: html_document 
--- 
```{r, echo=FALSE} 
require(quantmod) 
setInternet2(use = TRUE) 
prices = invisible(getSymbols("^GDAXI", return.class = "xts", auto.assign=FALSE)) 
cat(getwd()) 
rets = na.omit(diff(log(prices[,4]))) - mean(na.omit(diff(log(prices[,4])))) 
plot(rets['2015/2016']) 
``` 
+0

Работает отлично со мной. Просто получаю следующее предупреждение: ## Предупреждение в файле download.file (paste (yahoo.URL, "s =", Symbols.name, "& a =", ## from.m,: скачанная длина 180878! = Сообщила length 200 – YCR

+0

Получаете ли вы это, если вы вязаете скрипт с html? – Richard

+0

что такое 'sessionInfo()'? – YCR

ответ

1

Для получения прокси-сервера используйте setInternet2().

С более общей точки зрения, я предпочитаю, чтобы вручную загрузить файл, сохранить его в файле .rdatasave()) и использовать load() в файле rmarkdown.

Это делает ваш вязать быстрее (если вы не используете кеш или не делаете ошибок) и не делайте много раз в один и тот же файл. (только в случае, если это одноразовый анализ, а не отчет)

+0

Да, это так ... было бы неплохо иметь загрузку в файле уценки ... для автоматического обновления по прошествии времени ... – Richard

Смежные вопросы