問題タブ [purrr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
318 参照

r - dplyr::mutate: temporary expensive variable as input to several other operations, rowwise

It is a little tricky to show my problem with real data but I hope the following explains:

In the above example of course the rowwise is not needed.

Now lets suppose that the calculation to make c is both time consuming, c is a large object and not vectorized. So you don't want to have to execute it twice and you want it to be cleared from the memory after each row calculation happens.

Is there a clever way to do this? Perhaps with purrr::map?

0 投票する
1 に答える
1393 参照

r - purrr マップ関数をより高速に実行するにはどうすればよいですか?

map次のように、ライブラリからの関数を使用して(ライブラリから)関数purrrを適用しています: segmentedsegmented

オブジェクトby_veh28_101には 2457 が含まれていますtibbles。関数が使用される最後のステップは、map完了するまでに 16 分かかります。これを速くする方法はありますか?

0 投票する
1 に答える
1925 参照

r - purrr::map を使用して、データ フレーム内の列に対して線形モデルを反復処理する

purrr でマップ機能を使用する方法に慣れるための演習をしようとしています。いくつかのランダム データ (10 データポイントの 10 列) を作成してから、マップを使用して、データ フレームの結果の列に対して一連の回帰 (つまり lm(y ~ x, data = )) を実行したいと考えました。

最初の列を「y」として繰り返し使用する場合、1 から 10 までの各列を「x」として 10 回の回帰を実行します。明らかに、結果は重要ではありません。それは単なる方法です。最終的に 10 個の線形モデル オブジェクトのリストを作成したいと考えています。

ここで、私は立ち往生します:

ヒントをいただければ幸いです。

ありがとう。

0 投票する
1 に答える
1496 参照

r - map() 呼び出しからの data.frames のリストの結合

data.frames のリストに参加する「きちんとした」方法はありますか (a lafull_join()ですが、>2 data.frames の場合)? への呼び出しの結果として、data.frames のリストがありますmap()。私はReduce()以前にこのようなことをしていましたが、それらをパイプラインの一部としてマージしたいと思っています-それを行うためのエレガントな方法が見つかりませんでした. おもちゃの例:

0 投票する
1 に答える
3150 参照

r - ネストされたデータ フレームで `map()` を使用する

map()関数と一緒に関数を使用すると、いくつかの問題が発生しnest()ます。

次のようなデータを設定しています。

counter次に、フィールドに基づいてこれらのデータをネストしました。そのような:

私がやりたいことは、ネストされた各データ フレームにマップし、ネストされたデータ フレームに xts マトリックスを構築することです。次のコードのさまざまなバリエーションを試しました。

でお出迎えError in data$date_time : object of type 'closure' is not subsettableです。

どんな考えでも素晴らしいでしょう!

0 投票する
4 に答える
1613 参照

r - 各予測子列を使用してモデルを適合させ、結果をデータフレームに個別に保存します

応答変数の 1 つの列と予測変数のいくつかの列を持つデータフレームがあります。各予測変数を個別に使用して応答変数のモデルを適合させ、最終的にモデルの係数を含むデータフレームを作成したいと考えています。以前は、次のようにしていました。

dplyrただし、broom、 などを使い始めた今では、これは少し面倒に思えます。 を使用すると、purrr::map多かれ少なかれ、このモデルのリストを再作成できます。

ただし、このリストを で使用する適切な形式にする方法がわかりませんbroom::tidy。列ではなくグループ化された行を使用していた場合、モデルの適合を保存し、次のbroom::tidyようなことを行うために使用します。

もちろん、これは私がやっていることではありませんが、データの列を使用するときに同様の手順があることを望んでいました. おそらくpurrr::nest、目的の出力を作成するために使用する方法や同様のものはありますか?

0 投票する
2 に答える
1165 参照

r - Tidyverse を使用してリストをベクターに変換する

「R for Data Science」の簡単な例を次に示します。

これで、次のようなリスト列を作成できます。

データは次のようになります。

ここに質問があります: x2 しか持っていない場合、どうすれば x1 を回復できますか?

unnest()データの形状が変わるため、機能しません。

0 投票する
2 に答える
879 参照

r - dplyr::mutate 内で purrr::map を使用して、異なる開始パラメータをモデルに適用します

ggplot2 メーリング リストで誰かの質問に答えようとしているのですが、わかりません: https://groups.google.com/forum/#!topic/ggplot2/YgCqQX8JbPM

OP は、nls モデルのデータのサブセットに異なる開始パラメーターを適用したいと考えています。私の考えでは、彼は dplyr と purrr を読むべきだったのですが、数時間自分自身を試してみた後、私は壁にぶつかりました。それがバグなのか、それとも私の経験不足なのかは不明です。

このバグに関連しているように感じますが、これはしばらくの間修正されています... https://github.com/hadley/dplyr/issues/1447

私が知る限り、ネストされた tibble のスコープ内で変数を探していますが、mutate 呼び出しのスコープ内にしたいのです。これを回避する方法があるかどうかはわかりません。

0 投票する
1 に答える
351 参照

r - ティブル内のリスト列: リスト列を別のリスト列にリンクできますか?

これは私の最初の投稿です。ばかげているように聞こえたり、探している答えが既に存在する場合はご容赦ください。

私の主な問題は次のとおりです。4 つの列 (文字列、2 つのデータ列、および文字列の各レベルの距離行列を含む列) を含むティブルを作成し、を使用する関数を作成しようとしています。従属変数として 4 列目からの距離行列と、2 列目からのいくつかの独立変数。問題は、従属変数が見つからないことを R が警告し続けることです。

私が使用したパッケージは次のとおりです。

私の IV を含む tibble は次のようになります。

私はそれを入れ子にします:

そして、これがどのように見えるかです:

続いて、生の有無データを含む別のティブルを作成します。

次に、そのティブルもネストします。

そして、それは次のようになります:

IV を含む Tibble と結合するために、データ列の名前を変更します。

次のステップとして、行列を計算する関数を作成します。

rr ティブルは次のようになります。

そして、2 つの tibble を結合します。

ティブルは次のようになります。

そして、適用したい関数は次のようになります。

次のコードで計算しようとすると:

my_tibble <- my_tibble %>% mutate(mrm = map(IVs,mrm_model))

次のエラー メッセージが表示されます。

Error in mutate_impl(.data, dots) : object 'Dist.matrix' not found.

なぜこれがポップアップし続けるのか分かりますか?

$ 記号を使用して関数を「修正」しようとすると、次のようになります。

mrm_model <- function(df){ecodist::MRM(my_tibble$Dist.matrix~dist(Area),data = (df))}

次の警告が表示されます。

Error in mutate_impl(.data, dots) : invalid type (list) for variable 'my_tibble$Dist.matrix'.

私はこの種のデータ操作のまったくの初心者なので、明らかに頭がいっぱいです。得られるすべての助けに大いに感謝します。

0 投票する
1 に答える
511 参照

r - purrr::map2 を使用して dplyr コードを反復処理する

私はRに比較的慣れていないので、この質問が基本的すぎる場合は申し訳ありません。

さまざまな製品から販売された数量と収益を示すトランザクションがあります。3 つの商品があるため、2^3 = 8これらの商品を「バスケット」で販売するための組み合わせがあります。各バスケットは、指定された 3 つの年 (2016、2017、2018) のいずれか、およびゾーン (東と西) のいずれかで販売できます。[イーストとウエストの 2 つのゾーンで 3 年分の取引があります。]

私の目的は、特定のゾーンで特定の年にこれらの製品の組み合わせごとに、どれだけの収益が得られたか、販売された数量、および発生したトランザクションの数を分析することです。

purrr::mapゾーンに基づいてデータを分割することで、上記の操作を ( を使用して) 行うことができました。上記の組み合わせごとに、「年」でグループ化されたデータを保持する 2 つのデータ フレームのリストを作成しました。これはうまくいきます。ただし、私の意見では、コードは少し不格好です。繰り返し発言が多い。2X3 (2 ゾーンと 3 年) のリストを作成できるようにしたい

ゾーンごとの分割を使用したコードは次のとおりです。

初挑戦

ご覧のとおり、上記のコードは非常に不格好です。R の知識が限られているため、https://blog.rstudio.org/2016/01/06/purrr-0-2-0/を調べてマニュアルを読みpurrr::map2()ましたが、あまり多くの例を見つけることができませんでした。ベクターのリストを data.frame オブジェクトのリストに並列で新しいスロットとして追加する方法のソリューションを読んだ後? 、X = ゾーンとY = 会計年度を使用して、上記で行ったことを実行できると想定しています。

これが私が試したことです: セカンドトライ

しかし、このコードは機能しません。次のようなエラー メッセージが表示されます。 Error: .x (2) and .y (3) are different lengths

質問 1:map2自分がやろうとしていることを行うために使用できますか? そうでない場合、他に良い方法はありますか?

質問 2:念のため、 を使用できmap2ますが、1 つのコマンドで 2 つの Excel ファイルを生成するにはどうすればよいですか? 上記のように、上記の 2 つの関数呼び出しがあります。1つだけ持っていたいです。

質問 3:以下の 2 つのステートメントの代わりに、合計とカウントを 1 つのステートメントで行う方法はありますか? 合計とカウントを行うためのよりクリーンな方法を探しています。

誰か助けてくれませんか?


ここに私のデータがあります:


出力形式: 出力を生成するコードは次のとおりです。とを 1 つの Excel ファイルに 2 枚のシートとして、 と、とを 1 つの Excel ファイルに 3 枚のシートとして表示したいEastList.2016と思います。EastList.2017WestList.2016WestList.2017WestList.2018