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

时间:2017-12-27 09:08:39

标签: r loops dataframe

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

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

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

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

1 个答案:

答案 0 :(得分: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的步骤可能大致相同。 希望,它有帮助:)