2017-05-24 14 views
1

これは簡単であるようです。私は2つのリスト、3つの実験のリスト、各実験の3つの複製を持っています。私は何をしたいのは、一度にすべての9連で読み取ることがある:複数の入力に対する順次反復

library(purrr) 
x = list("exp1", "exp2", "exp3") 
y = list("rep1", "rep2", "rep3") 

map()を使用した例:私はmap2(x, y, paste)をしようとした場合

map(x, function(x){paste(x, map(y, paste0))}) 

しかし、私は両方のわずか3並列反復を取得入力。

マップの繰り返しをネストするのではなく、1つのmap2コールでこれを行う簡単な方法はありませんか?ありがとう。

+0

。同様に 'data.table'から' CJ'(クロスジョイン)を使用します。 –

+0

この種のものは 'map2(x、y、〜paste(x、y))'を実行しますが、バインディングはxごとのyのすべての組み合わせを見つけるのではなく、行ごとに行われます。 – timfaber

+0

申し訳ありません@timfaberしかし、これは私の 'map2(x、y、paste)'呼び出しを3回複製します。 – biomiha

答えて

2
あなたが明示的に expand.gridを使用して、たとえば、異なる組み合わせを生成する必要があります

:あなたは、内側にはダミーの列に加わることができdplyr` `結果をpaste``で

expand.grid(x = x, y = y) %>% { map2(.$x, .$y, paste) } 
+0

地図呼び出しをネストするよりも、私は同意します。ありがとう。 – biomiha

関連する問題