2016-05-02 16 views
0

私はRが比較的新しいので、私の問題のより速い方法を見つけようとしています。私はいくつかの制約プログラミングをしたいと思いますし、各変数のすべての可能な値を含むリストを持っています。実行可能な解決策を見つけるために、私はいくつかのカットを行う必要があります。私は現時点では多くのループで実現しています。私は "礼拝"のようなことをする方法があることを願っていますが、私はまた別のリストの関連する価値を知る必要があり、これを行う方法はわかりません。Rのリストにループを避ける

ここでは例です:

y=rep(list(rep(list(c(0, 1)), N)), S); 

job=-1:J 
job=rep(list(rep(list(rep(list(job), J)), N)), S) 

for (s in 1:S){ 
    for (n in 1:N){ 
    if (length(y[[s]][[n]])==1 && y[[s]][[n]]==0){ 
     job[[s]][[n]]=rep(list(-1), J); 
    } 
    } 
} 

あり、これらの複数が、forループ以下であり、私はY [[S]] [[N]]があるので、beginnigに変更はありませんことを知っています長さは2ですが、これは次のステップで変更されます。

私の問題を理解していただき、ありがとうと思います。

+0

ようこそスタックオーバーフロー! [良い質問をする方法](http://stackoverflow.com/help/how-to-ask)と[再現可能な例を与える方法](http://stackoverflow.com/questions/)の情報をお読みください。 5963269)。これは他の人があなたを助けることをはるかに容易にします。 – zx8754

答えて

0

はちょうどそのよう、同時にlapplyで二つのリストを反復処理する方法(彼らは同じ長さを持たなければならない)があります。もちろん

x1 = list(1, 2, 3) 
y1 = list(3, 2, 3) 

lapply(seq(1, length(x1)), function(i, x, y){ 
    if(x[[i]] == y[[i]]){ 
    return(TRUE) 
    } else{ 
    return(FALSE) 
    } 
}, x = x1, y = y1) 

、あなたが巣ソリューションは、別のリストをチェックすることができ現在のリスト項目の要素。

+1

長さ(x)は長さ(x1)でなければなりませんか? – mariodeng

+0

はい、あなたは正しいです – kodi1911

+0

ありがとうございました! –

関連する問題