用嵌套 foreach 循环分析价格趋势
股市以其难以预测而闻名。您在一家投资公司工作,老板希望查看一周窗口内的股票价格趋势。
您已经获取了自 2015 年以来 10 家科技公司的每日股价数据。团队中的数据科学家提供了用于拟合回归模型的代码。您计划使用 foreach()、%:% 和 %dopar% 对这段代码进行并行化。
要迭代的总列数已保存在工作区中的 ncols,行数为 nrows。parallel、doParalel 和 foreach 包已为您加载完毕。集群 cl 已配置好。您需要编写嵌套的 foreach() 循环。
本练习是课程的一部分
R 并行编程
练习说明
- 将要用于
foreach循环的集群注册。 - 指定一个 foreach 循环,从第 1 列到第
ncols列迭代,用"cbind"收集结果,并使用嵌套运算符。 - 再指定一个 foreach 循环,从第 1 行到第
nrows行迭代,用"c"收集结果,并使用并行执行运算符。 - 所有计算完成后停止集群。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Register the cluster to use with %dopar%
___
# Use foreach loop to iterate over columns one to ncol
moving_trend <- foreach(___, ___) %:%
# Iterate over rows one to nrows within each column
foreach(___, ___) %dopar% {
prices <- data[row:(row + 6), col]
if (any(is.na(prices))) NA
else {days <- 1:7
model <- lm(prices ~ days)
model$coefficients[2]}
}
# Stop cluster
___
print(paste("Total number of models fit:", sum(!is.na(moving_trend))))