R - 用于循环和应用功能(Quantmod)

时间:2015-12-26 17:45:51

标签: r quantmod

HY,

我有这个数据框,我想从Yahoo下载数据和计算变化百分比(Quantmod中的Delt函数)

View(Equity)

  Symbol
1      A
2     AA
3    AAC 

我做了一个周期

m<-nrow(Equity)

for (i in 1:m) {

   EquityDF <- Equity[i,]
   Data<-getSymbols(EquityDF,src="yahoo")
   Delt[i]<-apply(EquityDF[,1:5], 2, function(x) Delt(x, k=1)*100)

}

但我收到了这个错误

Error in EquityDF[, 1:5] : incorrect number of dimensions

我知道为什么会出现这个错误,因为如果我做了

EquityDF

输出

"A"

我该如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:1)

这是因为EquityDF仍然是一个角色。要检索相应的数据,您必须使用get:get(EquityDF)[, 1:5]

此外,我建议只拨打getSymbols一次,以便您在一次通话中检索所有需要的数据,从而将您的代码简化为:

Equity <- data.frame(Symbol = c("A","AA","AAC"), stringsAsFactors = FALSE)
getSymbols(Equity[, 1], src="yahoo")
Delt <- lapply(mget(Equity[, 1]), function(y){
           apply(y[, 1:5], 2, function(x) Delt(x, k=1)*100)})