Enum
関数を使ってエリクシルで2つの配列をどのようにマージしますか?エリクサー - マージ2一覧のリスト(列のような)
など。
points = [[1.0, 2.0],
[5.0, 3.0],
[2.0, 4.0],
[3.0, 1.0],
[2.0, 2.0],
[4.0, 3.0],
[1.0, 2.0],
[2.0, 5.0],
[14.0, 13.0],
[11.0, 12.0],
[12.0, 15.0],
[32.0, 25.0]]
results = [1.0,
3.0,
2.0,
1.0,
3.0,
2.0,
1.0,
3.0,
2.0,
1.0,
3.0,
2.0]
組み合わせアレイ(列を追加)、次のようになります。
combined = [[1.0, 2.0, 1.0],
[5.0, 3.0, 3.0],
[2.0, 4.0, 2.0],
[3.0, 1.0, 1.0],
[2.0, 2.0, 3.0],
[4.0, 3.0, 2.0],
[1.0, 2.0, 1.0],
[2.0, 5.0, 3.0],
[14.0, 13.0, 2.0],
[11.0, 12.0, 1.0],
[12.0, 15.0, 3.0],
[32.0, 25.0, 2.0]]
このような何かが動作するはずのように思え:
points
|> Stream.with_index
|> Enum.map(fn({x,i}) -> Enum.into(x, Enum.fetch!(results, i)) end)
が、これはエラーを生成します。
** (Protocol.UndefinedError) protocol Collectable not implemented for 1.0. This protocol is implemented for: BitString, Ecto.Adapters.SQL.Stream, File.Stream, HashDict, HashSet, IO.Stream, List, Map, MapSet, Plug.Conn, Postgrex.Stream
(elixir) lib/collectable.ex:1: Collectable.impl_for!/1
(elixir) lib/collectable.ex:77: Collectable.into/1
(elixir) lib/enum.ex:1158: Enum.into_protocol/2
(elixir) lib/enum.ex:1259: anonymous fn/3 in Enum.map/2
(elixir) lib/enum.ex:1824: anonymous fn/3 in Enum.map/2
(elixir) lib/stream.ex:1413: anonymous fn/3 in Enumerable.Stream.reduce/3
(elixir) lib/stream.ex:978: anonymous fn/3 in Stream.with_index/2
(elixir) lib/enum.ex:3161: Enumerable.List.reduce/3
(elixir) lib/stream.ex:1433: Enumerable.Stream.do_each/4
(elixir) lib/enum.ex:1823: Enum.map/2
それは素晴らしいです、私は本当に答えが好きです –