如何使用提取的字符串调用 xts 数据对象?

How do I use an extracted string to call an xts data object?

我想使用一串股票代码并循环将其拉入代码块中进行分析。我可以让循环提取数据,但随后我想将数据分配给通用数据元素,这样我就可以通过我的代码 运行 它了。无法以编程方式从列表中获取 xts 对象并使其执行 - 只是 returns 值。

library(quantmod)
library(xts)

asset1 = "ADBE"
asset2 = "VGT"

assets <- c(asset1, asset2)
assets       # This returns [1] "ADBE "VGT"

getSymbols(assets[1]) # All good so far this returns an xts object [1:3247] [1:6] called ADBE

手动输入:

df01 = ADBE # This makes df01 the same as the data values for ADBE.
df01 <- assets[1] # makes df01 a character string equal to "ADBE"

问题:

如何使用资产中的值以编程方式实现 df01 = ADBE 片段。当我使用 assets[1] 时它失败了,因为我不想每次都输入股票代码而是分配它,并且当我使用通用代码遍历 assets(n) 列表时。

我意识到这可能是一个简单的愚蠢问题,但它让我很困惑,无法在线找到解决方案。

将结果保存在一个列表中,默认情况下 getSymbols 将每个资产分配到环境中,我们可以使用 auto.assign = FALSE 更改此设置,示例:

myResult <- lapply(assets, getSymbols, auto.assign = FALSE)
myResult <- setNames(myResult, assets)

# access using names
myResult$ADBE
#            ADBE.Open ADBE.High ADBE.Low ADBE.Close ADBE.Volume ADBE.Adjusted
# 2007-01-03     40.72     41.32    38.89      39.92     7126000         39.92
# ...

# or using a variable
assets[ 1 ]
# [1] "ADBE"
myResult[[ assets[ 1 ] ]]
#           ADBE.Open ADBE.High ADBE.Low ADBE.Close ADBE.Volume ADBE.Adjusted
# 2007-01-03     40.72     41.32    38.89      39.92     7126000         39.92
# ...

如果我们不希望将它们保留在列表中,则可以使用 get:

getSymbols(assets)
df01 <- get(assets[ 1 ])
df01
#            ADBE.Open ADBE.High ADBE.Low ADBE.Close ADBE.Volume ADBE.Adjusted
# 2007-01-03     40.72     41.32    38.89      39.92     7126000         39.92
# ...