@PHXtrader 您要做的是用 xts 对象替换字符向量中的元素,这不是您想要做的,也没有意义。要将值分配给名称,您必须使用“分配”功能(?分配以获取更多信息)。您的代码中的另一个错误是您使用 'as.xts' 而不仅仅是 'xts' 。看看这个玩具示例:
tickers <- c("AMZN","AAPL") # this is a character object
getSymbols("SPY",from="2013-09-01") # this is a xts object
for (i in 1:length(tickers)) {
assign(tickers[i],xts(order.by = index(SPY)))
}
结果是 2 个 xts 对象,命名为 AMZN 和 AAPL,带有零。
>str(AAPL)
An 'xts' object of zero-width
> AAPL
Data:
numeric(0)
Index:
Date[1:9], format: "2013-09-03" "2013-09-04" "2013-09-05" "2013-09-06" "2013-09-09" ...
我认为完成您想做的事情的更好和更安全的方法是使用列表(或有时创建一个新环境)。像上面那样创建对象往往会导致很难找到和调试的错误,这些类型的构造会导致意外覆盖变量和许多其他潜在错误。以下示例避免了循环并在列表中创建空对象:
tickers <- c("AMZN","AAPL")
mylist <- rep(as.list(xts(order.by = index(SPY))),2) # creates 2 empty xts-objects in list
names(mylist) <- tickers
> str(mylist)
List of 2
$ AMZN:An 'xts' object of zero-width
$ AAPL:An 'xts' object of zero-width