Tôi có một vòng lặp for có nghĩa là một cái gì đó như thế này:chạy một vòng lặp for song song trong R
for (i=1:150000) {
tempMatrix = {}
tempMatrix = functionThatDoesSomething() #calling a function
finalMatrix = cbind(finalMatrix, tempMatrix)
}
Ông có thể cho tôi biết làm thế nào để thực hiện song song này?
Tôi đã thử điều này dựa trên một ví dụ trực tuyến, nhưng tôi không chắc liệu cú pháp có đúng hay không. Nó cũng không làm tăng tốc độ nhiều.
finalMatrix = foreach(i=1:150000, .combine=cbind) %dopar% {
tempMatrix = {}
tempMatrix = functionThatDoesSomething() #calling a function
cbind(finalMatrix, tempMatrix)
}
điều Chạy song song đòi hỏi khá nhiều chi phí. Bạn sẽ chỉ nhận được một tốc độ đáng kể lên nếu 'functionThatDoesSomething' mất đủ thời gian cho các chi phí để có giá trị nó. – Gregor
Tôi nghĩ rằng còn có rất nhiều công việc mà bạn cần phải làm trước khi bài đăng này đủ điều kiện. Tra cứu các gói 'parallel' và' doParallel', ví dụ ... – gregmacfarlane
Bạn không cần điều này - 'cbind (finalMatrix, tempMatrix)' - nếu bạn đang sử dụng đối số '.combine', chỉ cần trả về hàm đầu ra. – nrussell