我有一个数据框,在列#34中给出时间序列;值X" 我想计算此列(SMA和EMA)上的单个和指数移动平均线。 因为您可以更改参数" n"作为SMA / EMA计算中的窗口大小我想要以5为步长从5到150的循环中更改参数。然后将结果写入数据框。 所以数据框应该是这样的。
SMA_5 | SMA_10 | SMA_15 .... EMA_5 | EMA_10 | EMA_15 ......
理想情况下,列名也会在此循环中创建。 你能帮我吗? 提前谢谢
答案 0 :(得分:0)
据我所知,环路在R中被视为非最佳解决方案,应尽可能避免。在我看来,内置的R函数sapply
和colnames
可以为您的问题提供一个非常简单的解决方案:
library("TTR")
# example of data
test <- data.frame(moments = 101:600, values = 1:500)
seq_of_windows_size <- seq(from = 5, to = 150, by = 5)
col_names_of_sma <- paste("SMA", seq_of_windows_size, sep = "_")
SMA_columns <- sapply(FUN = function(i) SMA(x = test$values, n = i),
X = seq_of_windows_size)
colnames(SMA_columns) <- col_names_of_sma
然后您只需将SMA_columns
添加到原始数据框中即可。 EMA的步骤可能大致相同。
希望,它有帮助:)