我有多个数据框,其中包含以下形式的股票市场数据:
Open High Low Close Volume
我试图获得每个股票最后一行的平均值(在给定时间内)并将它们组合成一个数据框,如下所示:
Name SMA
StockA 15.1
StockB 34.44
我有一个简单的函数来计算平均值并正确格式化。它适用于我在单一股票(数据帧)上运行它。但是,当我尝试使用lapply将函数应用于所有数据帧的列表时,我收到错误:
x [,关闭]出错:维数不正确。
符号是所有股票数据框的列表。
非常感谢任何帮助。
require(TTR)
require(quantmod)
symbols <- c("XLF", "XLK", "XLU", "XLE", "XLP", "XLF", "XLB", "XLV", "XLY")
getSymbols(symbols, src='yahoo', from = '2016-01-01')
fun1<-function(x,Close) {
mean1<-SMA(x[,Close],5)
mean2<-tail(mean1,1)
df_name<-deparse(substitute(x))
print(mean2,paste(df_name))
}
df<-lapply(symbols,fun1)
final_df <- do.call(rbind, df)
答案 0 :(得分:0)
问题似乎是在获取正在运行的移动平均值(SMA)的最后一个值(尾部)并且在合并/合并数据帧之前在函数内添加名称。如果在合并数据帧之后完成所有操作,那么它似乎可以正常工作。
require(TTR)
require(quantmod)
symbols <- c("XLF", "XLK", "XLU", "XLE", "XLP", "XLF", "XLB", "XLV", "XLY")
StartDate = '2016-01-01'
Stocks = lapply(symbols, function(sym, column) {
SMA(na.omit(getSymbols(sym, from=StartDate, auto.assign=FALSE))[,4],5)
})
test<-do.call(merge, Stocks)
test2<-tail(test,1)
test3<-t(test2)
rownames(test3)<-symbols
colnames(test3)<-"SMA"
View(test3)