使用 lapply 查找多个数据帧中的个体均值 - 错误不正确的维数
Using lapply to find individual mean across multiple dataframes - error incorrect number of dimensions
我有多个包含以下形式的股市数据的数据框:
Open High Low Close Volume
我正在尝试获取每只股票最后一行的平均值(在给定时间段内),并将它们组合成一个数据框,如下所示:
Name SMA
StockA 15.1
StockB 34.44
我有一个简单的函数可以计算平均值并正确设置格式。当我 运行 它在单个股票(数据框)上时它起作用。但是,当我尝试使用 lapply 将该函数应用于所有数据帧的列表时,出现错误:
x[Close] 错误:维数不正确。
symbols 是所有库存数据帧的列表。
如有任何帮助,我们将不胜感激。
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)
问题似乎是我正在获取 运行 移动平均线 (SMA) 的最后一个值(尾部)并在函数中添加名称 - 在 combining/merging 数据帧之前.如果这一切都是在合并数据帧之后完成的,那么它似乎可以工作。
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)
我有多个包含以下形式的股市数据的数据框:
Open High Low Close Volume
我正在尝试获取每只股票最后一行的平均值(在给定时间段内),并将它们组合成一个数据框,如下所示:
Name SMA
StockA 15.1
StockB 34.44
我有一个简单的函数可以计算平均值并正确设置格式。当我 运行 它在单个股票(数据框)上时它起作用。但是,当我尝试使用 lapply 将该函数应用于所有数据帧的列表时,出现错误:
x[Close] 错误:维数不正确。
symbols 是所有库存数据帧的列表。
如有任何帮助,我们将不胜感激。
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)
问题似乎是我正在获取 运行 移动平均线 (SMA) 的最后一个值(尾部)并在函数中添加名称 - 在 combining/merging 数据帧之前.如果这一切都是在合并数据帧之后完成的,那么它似乎可以工作。
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)