我在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设置了名称,我就不必更改所有其余的代码。但这并不奏效。 我怎么能做到这一点?
答案 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
并且代码运行而不必改变其他任何东西!
修改强>
这可能是一种更好的方式,代码更具可读性,您可以避免标题中令人讨厌的^
:
library(quantmod)
mySymbol = "STOXX50E"
getSymbols(paste('^',mySymbol,sep=''), from="2004-01-01", to=Sys.Date())
chartSeries(Cl(get(mySymbol)),name=mySymbol)