가격 추세를 위한 중첩 foreach 루프
주식시장은 예측하기 어려운 변동성으로 잘 알려져 있습니다. 당신은 한 투자 회사에서 일하고 있으며, 상사는 일주일 구간에서의 주가 추세를 보고 싶어 합니다.
2015년 이후 10개 테크 기업의 일별 주가 데이터를 확보했습니다. 팀의 Data Scientist가 회귀 모델을 적합하는 코드를 제공했습니다. 이 코드를 foreach(), %:%, 그리고 %dopar%로 병렬화할 계획입니다.
반복할 전체 열 개수는 작업 공간의 ncols에, 행 개수는 nrows에 저장되어 있습니다. parallel, doParalel, foreach 패키지는 이미 로드되어 있습니다. 클러스터 cl도 설정되어 있습니다. 이제 중첩된 foreach() 루프를 작성해야 합니다.
이 연습은 강의의 일부입니다
R의 병렬 프로그래밍
연습 안내
foreach루프에서 사용할 클러스터를 등록하세요.- 열 1부터
ncols까지 반복하는foreach루프를 지정하고, 결과를"cbind"로 결합하며, 중첩 연산자를 사용하세요. - 행 1부터
nrows까지 반복하는 또 다른foreach루프를 지정하고, 결과를"c"로 결합하며, do-parallel 연산자를 사용하세요. - 모든 계산이 끝나면 클러스터를 중지하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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))))