問題タブ [lapply]

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 投票する
4 に答える
10209 参照

list - リスト内のデータフレーム。データフレームの名前で新しい変数を追加する

元のデータフレーム名またはリストインデックスの記録を維持しながら、最終的にマージしたいデータフレームのリストがあります。これにより、すべての行をサブセット化することができます。これを達成するために、すべてのデータフレームに新しい変数「id」を追加したいと思います。これには、それが属するデータフレームの名前/インデックスが含まれています。

編集:「私の実際のコードでは、次のコードを使用して複数のファイルを読み取ることでデータフレーム変数が作成されるため、「files.to.read」リストにあるものだけが実際の名前を持っていません。それらが整列するかどうかはわかりませんデータフレームの順序:

いくつかの 投稿でいくつかの方法が強調されてい ます:

私は2つの同様の方法を試しました.1つ目はインデックスリストを使用しています:

2 番目は、リストの names() を渡そうとします。

しかし、names() 関数はデータフレームのリストでは機能しません。NULL を返します。最初の例で seq_along(mylist) を使用できますか。

「ソースIDとのマージ」全体を処理するためのアイデアまたはより良い方法

編集 - 以下にソリューションを追加: Hadley の提案と Tommy のナッジを使用して、このようなソリューションを実装しました。

各データフレームの ID として files.to.read ベクトルを使用しました

また、何らかの理由で非常に遅いため、merge_recurse() の使用から変更しました。

みんな、ありがとう。

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

r - rapply と lapply で NULL の処理が異なるのはなぜですか?

リスト内の NULL 値が時々人々をつまずかせる可能性があることは承知しています。なぜ特定のインスタンスでlapply、値のrapply扱いが異なるように見えるのか興味があります。NULL

ここまでは順調ですね。でまったく同じことをしrapplyたらどうですか?

この例は非常に単純で再帰的ではありませんがrapply、ネストされたリストでも同じ動作が見られます。

私の質問はなぜですか?で宣伝されているように?rapply、それが「lapply の再帰バージョン」である場合、この場合、なぜ動作が異なるのでしょうか?

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

r - lapplyと2つの引数を使用してラグ回帰を実行する

この再現可能な例のように、複数の単変量回帰を実行しています。

a3つの単変量回帰のリストが含まれています。ここで、3つのラグを使用して同じ回帰を実行したいとします。l<-c(0,1,4)ここで、0はもちろんすでに取得したケースです。次のように、ベクトルlを直接使用する方法はありますか?

これが機能しなかった後、私は別のアプローチを試し、次のベクトルに追加しました:

取得するため:

残念ながら、新しい文字ベクトルで実行することはできません。get()は役に立ちません。なぜそれが機能するのか理解できませんvarslagged_vars、どちらが両方の文字ベクトルであるのかはわかりません。

L()構文はdynlmパッケージからのものであることに注意してください。副次的な質問:回帰結果の係数をget(x)というラベルのまま印刷した場合、どうすれば変更できますか?

i、jループが解決策になる可能性がありますが、私はむしろlapplyまたはこのファミリ以外のものを使用したいと思います...

編集: fromas.formulaと一緒には機能しません。このエラーメッセージが表示されます:L()dynlm

merge.zoo(log(GNP)、L(log(M1)、0)、retclass = "list"、all = FALSE)のエラー:関数"L"が見つかりませんでした

編集:この問題に言及している興味深い投稿beiAchimZeileisを見つけました。

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

r - あるリストから別のリストに名前を割り当てる

と呼ばれるいくつかのリストに保存された、動的に作成された回帰をたくさん取得しましたregressions。ここで、係数の名前を効率的に変更したいと思います。私がこれまでに持っているのは、機能するこのループです:

関数の助けを借りて、これをもう少し一般的に行うためにかなり長い間試みてきました。これは、私が持っている回帰の唯一のリストではありません。しかし、他に何も機能させることができませんでした。基本的にlapplyに基づいた他のいくつかの試みを次に示します。

別の試みは、出力が示すように内部的にも機能するが、名前をグローバルに割り当てない (回帰リストが保存される場所) for ループを使用して関数を作成することでした。

あ、ちょっと休憩。

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

list - llply または lapply に関する質問 - リスト内の data.frames に関数を適用する

親愛なる R ユーザー コミュニティへ

次のように、リストに多くの data.frames があります (便宜上、21 のリストの 1 つの data.frame のみを示します)。

リスト内の各 data.frame を個別に処理すると、次のように、temp と date から Zoo オブジェクトを作成できます。

Zoo オブジェクトは次のようになります。

llply または apply (または同様のもの) を使用して、リスト全体を一度に操作するにはどうすればよいですか?

出力は、data.frames の新しいリスト、または一連の独立した data.frames (上記の Zoo の例のようにそれぞれに名前が付けられています) に入る必要があります。日付列は、通常の時系列 (日) ですが、欠落している日付が含まれていることに注意してください (既存の日付の一時の NA に加えて)。欠落している日付は、zoo 関数によって埋められます。したがって、zoo オブジェクトを含む出力 data.frame は、元のものよりも長くなります。

よろしくお願いします。

0 投票する
0 に答える
514 参照

r - ODE の反復解法におけるループの回避

時間依存の共変量を使用して、いくつかの生存データにパラメトリック モデルを当てはめています。当てはめ手順には、いくつかの ODE を反復的に解くことが含まれます。つまり、被験者ごとに時間間隔ごとに 1 つの ODE がありますが、現在の間隔での ODE の初期条件は、前の間隔での ODE の解の最後の値になります。その意味で、ODE は相互に依存しています。

私の問題はこれに尽きます。現在、前の解の最後の値を次の解の開始点として使用する必要があるため、ループを介してこれらの ODE を繰り返し解いています。問題は、このループが大規模なデータセットの場合に多くの時間を消費することです。たとえば、vapply、または別のベクトル化された関数を使用して同じことを行う方法はありますか?

アーカイブを検索してきましたが、以前の値に依存する操作をベクトル化するという問題の解決策として何も出てきません。

これは、それ自体では統計的に意味のあるものを生成しないコード例ですが、私の問題を示しています。

0 投票する
3 に答える
4346 参照

r - 関数内でgetinsidelapplyを使用する

これは非常に複雑な質問のように思えるかもしれませんが、しばらくの間、私は少し頭がおかしくなります。それは好奇心のためでもあります。なぜなら、私はすでに必要なことをする方法を持っているので、それほど重要ではありません。

Rでは、ユーザーが入力したすべての引数と値を含む名前付きリストオブジェクトを返す関数が必要です。このために私はこのコードを作成しました(おもちゃの例):

だからこれが尋ねられたとき:

この結果は完璧です。問題は、私lapplyが同じ目標を使用しようとすると、もう少し効率的(かつエレガント)になるように、私が望むように機能しないということです:

get問題は明らかに、最初の引数(文字列、変数の名前)を評価する環境にあります。これは私がエラーメッセージから部分的に知っています:

また、.GlobalEnv環境内に正しい名前のオブジェクトがある場合、fooは代わりにそれらの値を返します。

明らかに、getデフォルトでで評価されるように、現在の関数のオブジェクトではなく、環境parent.frame()内のオブジェクトを検索します。.GlobalEnvこれは、関数の最初のバージョンでは発生しないため、奇妙です。

適切な環境で評価する関数を作成するために多くのオプションを試しgetましたが、正しく実行できませんでした(オプションとして試しましたpos=-2,0,1,2envir=NULL

特にこの「奇妙な」場合に、誰かが私より少し環境について知っているなら、私はこれを解決する方法を知りたいです。

御時間ありがとうございます、

ファン

0 投票する
3 に答える
6672 参照

r - for ループを変換して適用する

R ではapplylapplyrapplydo.call、 などの関数を使用して次のコードをどのように置き換えますか?


この部分について:

私は次のようなものを試しました:

これは機能します。しかし、slist[[s]] <- 0同じ for ループ内のその部分については、どうすればよいかわかりません。

編集:これが私がやろうとしていることです。vector については、uその vector 内のすべてのサブセットのリストを作成しています。次に、サブセットごとに に割り当てs、その文字列sを の要素の名前として使用しますslist。ちょっと変ですが、宿題用です。上記のコードの場合、これは slist の最初の 5 つの要素になります。

ええ、私は apply などを適切に使用する方法を学ぼうとしています。

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

r - Rでマルチコアを使用してGWASデータを分析する

私はRを使用してゲノムワイド関連解析データを分析しています。私は約500,000の潜在的な予測変数(一塩基多型、またはSNP)を持っており、それらのそれぞれと継続的な結果(この場合は血中の低密度リポタンパク質濃度)との関連をテストしたいと思います。

これを問題なく実行するスクリプトをすでに作成しました。簡単に説明すると、「データ」と呼ばれるデータオブジェクトがあります。各行は、研究の特定の患者に対応しています。年齢、性別、肥満度指数(BMI)、および血中LDL濃度の列があります。SNPデータを含む他の50万の列もあります。

次のように、現在forループを使用して線形モデルを50万回実行しています。

それはすべてうまくいきます。しかし、私は本当に分析をスピードアップしたいと思います。したがって、私はマルチコア、DoMC、およびforeachパッケージを試してきました。

私の質問は、誰かがforeachスキームを使用してこのコードを適応させるのを手伝ってくれませんか?

どうやら16コアが利用可能なLinuxサーバーでスクリプトを実行しています。foreachパッケージを試してみましたが、それを使用した結果は比較的悪く、foreachを使用して分析を実行するのに時間がかかることを意味します。

たとえば、次のように線形モデルオブジェクトを保存しようとしました。

これには、通常のforループを使用する場合の2倍以上の時間がかかります。これをより良くまたはより迅速に行う方法についてのアドバイスをいただければ幸いです。lapplyの並列バージョンを使用することもオプションである可能性があることは理解していますが、これを行う方法もわかりません。

ではごきげんよう、

アレックス

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

r - R の by() と lapply() のパフォーマンスに大きな違いがあるのはなぜですか?

xts複数の銘柄記号の時系列を含むオブジェクトがあります。オブジェクトをシンボル固有のサブグループに分割し、各シンボルのデータを処理してから、行の完全なセットを含む元のマトリックスxtsですべてのサブグループを再構築する必要があります。xts各シンボルは、行列をサブグループに分割するための因子インデックスとして使用される 1 ~ 4 文字のフィールドです。

by()これらは、 、lapply()およびを呼び出したときにマトリックスを分割するために報告された時間ddply()です。

データ フレームとマトリックス サブグループの操作に関する詳細については、この優れたブログ投稿を参照してください。

lapply/split.default を使用するとパフォーマンスに大きな違いがあるのはなぜですか?