【发布时间】:2020-10-09 16:42:35
【问题描述】:
我有一个 1500 obs 的 df。和 100 个变量。 这些是股票,我想计算所有 100 股的 EMA50 并将它们放在新的 df 中。我想把它放在一个循环中,因为我想在那之后绘制每个共享+结果。不过剧情暂时不重要。为了更好地展示整个过程,我做了一个例子:(可能有一个更简单的方法来编写这个例子,但我正在学习中,还在学习用 R 编写代码。)
library(tidyverse)
library(quantmod)
library(fPortfolio)
library(PerformanceAnalytics)
#
DStart <- "2016-01-01"
DEnd <- "2020-12-31"
#
#loading DAX and MDAX Index data from Yahoo Finance
TSLA <- getSymbols("TSLA", src="yahoo", from=DStart, to=DEnd, auto.assign=FALSE)
AAPL <- getSymbols("AAPL", src="yahoo", from=DStart, to=DEnd, auto.assign=FALSE)
AMZN <- getSymbols("AMZN", src="yahoo", from=DStart, to=DEnd, auto.assign=FALSE)
#
Closing <- merge(TSLA, AAPL, AMZN)
#
write.zoo(Closing, file="Closing.csv", sep=",", dec="." )
#
df_Closing <- Closing[,-c(1,2,3,5,6,7,8,9,11,12,13,14,15,17,18)]
我现在有一个 df 中的所有收盘价,就像我的真实 df 一样。 对于我使用的 EMA 的单独计算:
df_Closing$TSLA_EMA50 = EMA(df_Closing$TSLA.Close,50)
在搜索过程中,我遇到了几个解决方案,直到现在都以错误消息结尾。 我的最后一次尝试是这样的:
df_EMA50 <- df_Closing
for (i in names(df_Closing)) {
j <- EMA(df_Closing$i,50)
new_df[i] <- j$EMA50
}
【问题讨论】:
标签: r loops time-series