2017-06-16 4 views
0

でのforeachを実行するときに、私が欲しいですこのスクリプトを並列に実行するには時間がかかるので、 。 - 引数が長さゼロ 『エラー</p>以下 <p>は大きなテーブルのほんの一例です...私は、これはforeachのとは何かを持っているかどうかを知るドントが、私はより多くの予想と推測予想

であり、私が個別に実行している場合、予測機能が正常に動作して理由を知っているドント

「タスク2が失敗した{でエラーが発生しました:』私は、エラーメッセージが表示されます。あなたの助けのための

# Test Data 
Data <- data.frame(Date = as.Date(c("2017-01-01", "2017-02-01", "2017-03-01", "2017-04-01", "2017-05-01", "2017-06-01")), 
       A = c(1,6,3,6,5,6), 
       B = c(6,5,6,3,6,1)) 
Data <- as.xts(Data[-1], Data[,1]) #convert to xts for the forecast package          

library(foreach) 
library(doSNOW) 
library(forecast) 
cl <- makeCluster(2, type="SOCK") # for 2 cores machine 
registerDoSNOW (cl) 

# forecast the values in each column and bind the result of the forecast together by column to get one data.frame 
Result <- foreach(j = 1:ncol(Data), .combine = "cbind", .packages = "forecast") %dopar% {forecast(Data[,j], h = 6L)$mean} 

stopCluster(cl) 


# Result how it should look like 
Result <- data.frame(A = c(4.7,4.7,4.7,4.7,4.7,4.7), 
        B = c(4.4,4.4,4.4,4.4,4.4,4.4)) 

ありがとう!

答えて

2

はエラーがエクスポートされていないxtsパッケージに起因している。環境があなたのxtsオブジェクトDataため[メソッドにアクセスする必要があります。

.packages = c("forecast","xts")(推奨)または明示的にxts:::`[.xts`(推奨されていませんが、エラーが発生している理由を示す)を使用して修正できます。

注:出力は、あなたの質問

library(foreach) 
library(doSNOW) 
library(forecast) 

# Test Data 
Data <- data.frame(Date = as.Date(c("2017-01-01", "2017-02-01", "2017-03-01", 
            "2017-04-01", "2017-05-01", "2017-06-01")), 
        A = c(1,6,3,6,5,6), 
        B = c(6,5,6,3,6,1)) 
Data <- xts::as.xts(Data[-1], Data[,1]) #convert to xts for the forecast package          

cl <- makeCluster(2, type="SOCK") # for 2 cores machine 
registerDoSNOW(cl) 

# forecast the values in each column and bind the result of the forecast together by column to get one data.frame 
Result_export <- foreach(j = 1:ncol(Data), .combine = "cbind", 
         .packages = c("forecast","xts")) %dopar% { 
          forecast(Data[,j], h = 6L)$mean 
          } 

Result_colon <- foreach(j = 1:ncol(Data), .combine = "cbind", 
         .packages = c("forecast")) %dopar% { 
          forecast(xts:::`[.xts`(Data,j=j), h = 6L)$mean 
         } 

identical(Result_export, Result_colon) 
# [1] TRUE 

as.data.frame(Result_export) 
# result.1 result.2 
# 1 4.499867 4.500107 
# 2 4.499867 4.500107 
# 3 4.499867 4.500107 
# 4 4.499867 4.500107 
# 5 4.499867 4.500107 
# 6 4.499867 4.500107 

stopCluster(cl) 
+0

に投稿された期待される結果と一致していませんありがとうございます!私はそれについて考えなかった! – Sven

関連する問題