ホーム>source

次の単純化されたベクトルがあると仮定します(実際には、はるかに多くの値が含まれています)。

<前>ウィズウィズ

ただし、ベクターが欲しいバツy 同じインデックス値を持つ要素のみが考慮される組み合わせ、つまり(x1、y1)、(x2、y2)、(x3、y3)は考慮されますが、(x1、y2)、(x1、y3)などは考慮されません。 ながらベクトル は通常どおり使用されます(そのすべての要素はxとyの組み合わせの結果と「ペアになっています」)。

つまり、次のdfを取得したいと思います。

<前>ウィズウィズ

もし ベクトルには3つの要素、つまりn<-(1、2、3)があり、次のようになります。

<前>ウィズウィズ n <- c(1,2) x <- c(4,5,6) y <- c(7,8,9) #to get all possible combinations, we can use expand.grid df <- expand.grid(n=n,                   x=x,                   y=y ) > df n x y 1 4 7 2 4 7 1 5 7 2 5 7 1 6 7 2 6 7 1 4 8 2 4 8 1 5 8 2 5 8 1 6 8 2 6 8 1 4 9 2 4 9 1 5 9 2 5 9 1 6 9 2 6 9
あなたの答え
  • 解決した方法 # 1

    一緒にする必要があるペアのリストを組み合わせて、それを expand.grid で使用できます

    <前>ウィズウィズ

    または expand.grid(n, Map(c, x, y)) %>% tidyr::unnest_wider(Var2) を使用することもできます  同じロジックを使用します。

    <前>ウィズウィズ

  • 解決した方法 # 2

    これは crossing を使用した整然とした解決策です :

    <前>ウィズウィズ

    例の出力とまったく同じように値をソートする必要がある場合は、 library(tidyverse) crossing(n, x = map2(x, y, c)) %>% unnest_wider(x) %>% rename_at(-1, ~c("x", "y")) # n x y # <dbl> <dbl> <dbl> #1 1 4 7 #2 1 5 8 #3 1 6 9 #4 2 4 7 #5 2 5 8 #6 2 6 9 を追加します   purrr::map_df の出力に 。

    library(tidyverse) map_df(n, ~tibble(n=.x, x, y)) n x y <dbl> <dbl> <dbl> 1 1 4 7 2 1 5 8 3 1 6 9 4 2 4 7 5 2 5 8 6 2 6 9

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ elasticsearch - Javaを使用してElasticSeachインデックスからJSONとしてデータを取得する