У меня дф с 1500 набс. и 100 переменных. Это акции, и я хотел бы рассчитать EMA50 для всех 100 акций и поместить их в новый df. Я хотел бы поместить это в al oop, потому что я хочу построить график каждой доли + результат после этого. Но сюжет пока не важен. Чтобы лучше показать весь процесс, я привел пример: (Возможно, есть более простой способ закодировать этот пример, но я нахожусь в середине учебы и все еще учусь кодировать на 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
}