R:在R中循环并在其他数据帧中按列写入结果

问题描述 投票:0回答:1

因为我对R很新,所以我正在努力寻找合适的解决方案。到目前为止,所有的互联网和stackoverflow搜索都无法让我领先。所有尝试rbind,cbind,lapply,sapply都没有用。所以这是问题所在:

我有一个数据框,其中列为“值X”的时间序列我想计算此列(SMA和EMA)上的单个和指数移动平均线。由于您可以在SMA / EMA计算中将参数“n”更改为窗口大小,因此我希望以5为步长从5到150更改循环中的参数。然后将结果写入数据框。所以数据框应该是这样的。

SMA_5 | SMA_10 | SMA_15 .... EMA_5 | EMA_10 | EMA_15 ......

理想情况下,列名也在此循环中创建。你能帮我吗?先感谢您

r loops dataframe
1个回答
0
投票

据我所知,循环被视为R中的非最优解,如果可能应该避免。在我看来,内置的R函数sapplycolnames可以为您的问题提供一个非常简单的解决方案:

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的步骤可能大致相同。希望能帮助到你 :)

© www.soinside.com 2019 - 2024. All rights reserved.