2017-11-08 13 views
1

私は、0から4の整数(私の離散変数の次数を表す)でのみ分類された項目(行)で作られたデータセットを持っています。 2年のデータ、1980年のデータ、1996年のデータ(列)です。データセットの異なる反復の生成

df <- read.table(text = " 
1980 1996 
1 1 
2 4 
4 1", header = T) 

私の目標は、しかし現実に基づいているように、この仮想的なデータのために、それは3つの法則に従わなければならない中間年1984年、1988年と1992年

df.new <- data.frame(X1980 = NULL, X1984 = NULL, X1988 = NULL, X1992 = NULL, X1996 = NULL) 

用データを生成することです:

  • アイテムは1980年と1996年に同じ整数に割り当てられ、期間全体にわたって同じままです。
  • 1980年から1996年に増減するアイテム与えられた時間ステップで1つの整数だけ変更することができます(アイテムは整数をスキップできません)。 df.newが生成するので、思わ

    for(i in 1:nrow(df)){ 
    
    lst <- ifelse(df$X1980[i] > df$X1996[i], 
           list(sort(sample(df$X1980[i]:df$X1996[i],3,replace = T), decreasing = T)), 
           list(sort(sample(df$X1980[i]:df$X1996[i],3,replace = T), decreasing = F))) 
    
        lst <- c(df$X1980[i], unlist(lst), df$X1996[i]) 
    
        df.new <- rbind(df.new, data.frame(X1980 = lst[1], 
               X1984 = lst[2], 
               X1988 = lst[3], 
               X1992 = lst[4], 
               X1996 = lst[5])) 
    } 
    

    がうまく動作するように:

  • 項目は

は、私が使用していますこれを達成するために(アイテムが単調でなければならない)増加または減少することができます

X1980 X1984 X1988 X1992 X1996 
1  1  1  1  1  1 
2  2  3  4  4  4 
3  4  4  3  2  1 

もちろん、私の3つの法律にも従うこのデータセットには複数のバリエーションがあります。

sim = 1000このデータセットの法律を順守するループを作成するにはどうすればよいですか?

どのようなアイテム(どのデータベースでも)が私の3つの法律を破っていないことをどのように確認できますか?

現在、ループの前にはresults <- foreach (i = 1:sim, .combine="df") %dopar%が試行されていますが、これまでに失敗しています。

何か助けや助言をいただければ幸いです。あなたが行うことができます

答えて

0

lapplyよう

library(foreach) 
results <- foreach(i = 1:100) %dopar% { 
    foreach(i = 1:nrow(df), .combine = "rbind") %do% { 

    lst <- ifelse(df$X1980[i] > df$X1996[i], 
        list(sort(sample(df$X1980[i]:df$X1996[i],3,replace = T), decreasing = T)), 
        list(sort(sample(df$X1980[i]:df$X1996[i],3,replace = T), decreasing = F))) 

    lst <- c(df$X1980[i], unlist(lst), df$X1996[i]) 

    data.frame(X1980 = lst[1], 
       X1984 = lst[2], 
       X1988 = lst[3], 
       X1992 = lst[4], 
       X1996 = lst[5]) 
    } 
} 
do.call("rbind", results) 

foreach作品を、それはあなたがあなたの式から(最後の要素)を返すものをリストに入れます。

関連する問題