R:使用变量时如何避免使用显式名称

时间:2015-05-08 22:18:01

标签: r finance quantmod

我在R中有以下代码:

c

只需下载inress Eurostoxx的时间序列,然后绘制收盘价。 它按预期工作。 无论如何,我想知道如何避免明确地写出" STOXX50E"每次我想引用这个变量。 例如,我希望能够引用包含通用名称的数据的变量,例如" INDEX"所以当我想用另一个inder启动代码时,我不需要更改所有的调用。

例如,如果我想下载并绘制S& P500的收盘价,我必须这样做:

library(quantmod)

mySymbol = "^STOXX50E"
getSymbols(mySymbol, from="2004-01-01", to=Sys.Date())

chartSeries(Cl(STOXX50E))

所以我不仅要在第二行更改变量名,还要在最后一行更改变量名。 我更喜欢更通用的东西:

library(quantmod)

mySymbol = "^GSPC"
getSymbols(mySymbol, from="2004-01-01", to=Sys.Date())

chartSeries(Cl(GSPC))

因此,一旦我为mySymbol设置了名称,我就不必更改所有其余的代码。但这并不奏效。 我怎么能做到这一点?

2 个答案:

答案 0 :(得分:2)

当前接受的解决方案的替代方法是在getSymbols的通话中使用library(quantmod) mySymbol <- "^STOXX50E" x <- getSymbols(mySymbol, from="2004-01-01", to=Sys.Date(), auto.assign=FALSE) chartSeries(Cl(x), name=mySymbol) # If you want to remove the "^" from the name: chartSeries(Cl(x), name=sub("^","",mySymbol,fixed=TRUE))

{{1}}

我更喜欢这种解决方案,因为我发现编码器更清晰,更容易理解。

答案 1 :(得分:1)

你可以这样做:

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并且代码运行而不必改变其他任何东西!

enter image description here

修改

这可能是一种更好的方式,代码更具可读性,您可以避免标题中令人讨厌的^

library(quantmod)

mySymbol = "STOXX50E"
getSymbols(paste('^',mySymbol,sep=''), from="2004-01-01", to=Sys.Date())

chartSeries(Cl(get(mySymbol)),name=mySymbol)

enter image description here