R - 用于循环和应用函数 (Quantmod)
R - For Cycle and Apply function (Quantmod)
嗨,
我有这个数据框,我想从 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"
我该如何解决这个问题?
谢谢
发生这种情况是因为 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)})
嗨,
我有这个数据框,我想从 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"
我该如何解决这个问题?
谢谢
发生这种情况是因为 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)})