我在R中有以下代码:
library(quantmod)
mySymbol = "^STOXX50E"
getSymbols(mySymbol, from="2004-01-01", to=Sys.Date())
chartSeries(Cl(STOXX50E))
只需下载内部Eurostoxx的时间序列,然后绘制收盘价即可。它按预期工作。无论如何,我想知道如何避免每次我要引用此变量时都明确地写“ STOXX50E”。例如,我希望能够使用通用名称(如“ INDEX”)引用包含数据的变量,这样,当我想使用另一个inder启动代码时,就无需更改所有调用。
例如,如果我要下载并标绘S&P500的收盘价,我必须这样做:
library(quantmod)
mySymbol = "^GSPC"
getSymbols(mySymbol, from="2004-01-01", to=Sys.Date())
chartSeries(Cl(GSPC))
所以我不仅要在第二行而且还要在最后一行更改变量名。我更喜欢一些通用的东西:
library(quantmod)
mySymbol = "^GSPC"
getSymbols(mySymbol, from="2004-01-01", to=Sys.Date())
chartSeries(Cl(mySymbol))
这样,一旦我为mySymbol设置了名称,就不必更改其余所有代码。但这是行不通的。我该怎么做?
您可以这样操作:
library(quantmod)
mySymbol = "^STOXX50E"
getSymbols(mySymbol, from="2004-01-01", to=Sys.Date())
chartSeries(Cl(get(substring(mySymbol,2,nchar(mysymbol)))))
如果要更改图的标题,请执行以下操作:
chartSeries(Cl(get(substring(mySymbol,2,nchar(mysymbol)))), name=mySymbol)
本质上,当您使用getSymbols
名为的变量时,该变量STOXX50E
存储在包含数据的全局环境中。使用,get
您可以通过提供字符串“ ^ STOXX50E”来访问变量名。然后substring
,我使用以避免变量mySymbol的第一个字符为^
。
而且有效。您实质上进行了更改mySymbol
,并且代码无需更改就可以运行!
编辑:
就代码更易读和避免^
标题中的烦人而言,这可能是一种更好的方法:
library(quantmod)
mySymbol = "STOXX50E"
getSymbols(paste('^',mySymbol,sep=''), from="2004-01-01", to=Sys.Date())
chartSeries(Cl(get(mySymbol)),name=mySymbol)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句