問題タブ [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.
list - リスト内のデータフレーム。データフレームの名前で新しい変数を追加する
元のデータフレーム名またはリストインデックスの記録を維持しながら、最終的にマージしたいデータフレームのリストがあります。これにより、すべての行をサブセット化することができます。これを達成するために、すべてのデータフレームに新しい変数「id」を追加したいと思います。これには、それが属するデータフレームの名前/インデックスが含まれています。
編集:「私の実際のコードでは、次のコードを使用して複数のファイルを読み取ることでデータフレーム変数が作成されるため、「files.to.read」リストにあるものだけが実際の名前を持っていません。それらが整列するかどうかはわかりませんデータフレームの順序:
私は2つの同様の方法を試しました.1つ目はインデックスリストを使用しています:
2 番目は、リストの names() を渡そうとします。
しかし、names() 関数はデータフレームのリストでは機能しません。NULL を返します。最初の例で seq_along(mylist) を使用できますか。
「ソースIDとのマージ」全体を処理するためのアイデアまたはより良い方法
編集 - 以下にソリューションを追加: Hadley の提案と Tommy のナッジを使用して、このようなソリューションを実装しました。
各データフレームの ID として files.to.read ベクトルを使用しました
また、何らかの理由で非常に遅いため、merge_recurse() の使用から変更しました。
みんな、ありがとう。
r - rapply と lapply で NULL の処理が異なるのはなぜですか?
リスト内の NULL 値が時々人々をつまずかせる可能性があることは承知しています。なぜ特定のインスタンスでlapply
、値のrapply
扱いが異なるように見えるのか興味があります。NULL
ここまでは順調ですね。でまったく同じことをしrapply
たらどうですか?
この例は非常に単純で再帰的ではありませんがrapply
、ネストされたリストでも同じ動作が見られます。
私の質問はなぜですか?で宣伝されているように?rapply
、それが「lapply の再帰バージョン」である場合、この場合、なぜ動作が異なるのでしょうか?
r - lapplyと2つの引数を使用してラグ回帰を実行する
この再現可能な例のように、複数の単変量回帰を実行しています。
a
3つの単変量回帰のリストが含まれています。ここで、3つのラグを使用して同じ回帰を実行したいとします。l<-c(0,1,4)
ここで、0はもちろんすでに取得したケースです。次のように、ベクトルl
を直接使用する方法はありますか?
これが機能しなかった後、私は別のアプローチを試し、次のベクトルに追加しました:
取得するため:
残念ながら、新しい文字ベクトルで実行することはできません。get()は役に立ちません。なぜそれが機能するのか理解できませんvars
がlagged_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を見つけました。
r - あるリストから別のリストに名前を割り当てる
と呼ばれるいくつかのリストに保存された、動的に作成された回帰をたくさん取得しましたregressions
。ここで、係数の名前を効率的に変更したいと思います。私がこれまでに持っているのは、機能するこのループです:
関数の助けを借りて、これをもう少し一般的に行うためにかなり長い間試みてきました。これは、私が持っている回帰の唯一のリストではありません。しかし、他に何も機能させることができませんでした。基本的にlapplyに基づいた他のいくつかの試みを次に示します。
別の試みは、出力が示すように内部的にも機能するが、名前をグローバルに割り当てない (回帰リストが保存される場所) for ループを使用して関数を作成することでした。
あ、ちょっと休憩。
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 は、元のものよりも長くなります。
よろしくお願いします。
r - ODE の反復解法におけるループの回避
時間依存の共変量を使用して、いくつかの生存データにパラメトリック モデルを当てはめています。当てはめ手順には、いくつかの ODE を反復的に解くことが含まれます。つまり、被験者ごとに時間間隔ごとに 1 つの ODE がありますが、現在の間隔での ODE の初期条件は、前の間隔での ODE の解の最後の値になります。その意味で、ODE は相互に依存しています。
私の問題はこれに尽きます。現在、前の解の最後の値を次の解の開始点として使用する必要があるため、ループを介してこれらの ODE を繰り返し解いています。問題は、このループが大規模なデータセットの場合に多くの時間を消費することです。たとえば、vapply、または別のベクトル化された関数を使用して同じことを行う方法はありますか?
アーカイブを検索してきましたが、以前の値に依存する操作をベクトル化するという問題の解決策として何も出てきません。
これは、それ自体では統計的に意味のあるものを生成しないコード例ですが、私の問題を示しています。
r - 関数内でgetinsidelapplyを使用する
これは非常に複雑な質問のように思えるかもしれませんが、しばらくの間、私は少し頭がおかしくなります。それは好奇心のためでもあります。なぜなら、私はすでに必要なことをする方法を持っているので、それほど重要ではありません。
Rでは、ユーザーが入力したすべての引数と値を含む名前付きリストオブジェクトを返す関数が必要です。このために私はこのコードを作成しました(おもちゃの例):
だからこれが尋ねられたとき:
この結果は完璧です。問題は、私lapply
が同じ目標を使用しようとすると、もう少し効率的(かつエレガント)になるように、私が望むように機能しないということです:
get
問題は明らかに、最初の引数(文字列、変数の名前)を評価する環境にあります。これは私がエラーメッセージから部分的に知っています:
また、.GlobalEnv
環境内に正しい名前のオブジェクトがある場合、fooは代わりにそれらの値を返します。
明らかに、get
デフォルトでで評価されるように、現在の関数のオブジェクトではなく、環境parent.frame()
内のオブジェクトを検索します。.GlobalEnv
これは、関数の最初のバージョンでは発生しないため、奇妙です。
適切な環境で評価する関数を作成するために多くのオプションを試しget
ましたが、正しく実行できませんでした(オプションとして試しましたpos=-2,0,1,2
)envir=NULL
。
特にこの「奇妙な」場合に、誰かが私より少し環境について知っているなら、私はこれを解決する方法を知りたいです。
御時間ありがとうございます、
ファン
r - for ループを変換して適用する
R ではapply
、lapply
、rapply
、do.call
、 などの関数を使用して次のコードをどのように置き換えますか?
この部分について:
私は次のようなものを試しました:
これは機能します。しかし、slist[[s]] <- 0
同じ for ループ内のその部分については、どうすればよいかわかりません。
編集:これが私がやろうとしていることです。vector については、u
その vector 内のすべてのサブセットのリストを作成しています。次に、サブセットごとに に割り当てs
、その文字列s
を の要素の名前として使用しますslist
。ちょっと変ですが、宿題用です。上記のコードの場合、これは slist の最初の 5 つの要素になります。
ええ、私は apply などを適切に使用する方法を学ぼうとしています。
r - Rでマルチコアを使用してGWASデータを分析する
私はRを使用してゲノムワイド関連解析データを分析しています。私は約500,000の潜在的な予測変数(一塩基多型、またはSNP)を持っており、それらのそれぞれと継続的な結果(この場合は血中の低密度リポタンパク質濃度)との関連をテストしたいと思います。
これを問題なく実行するスクリプトをすでに作成しました。簡単に説明すると、「データ」と呼ばれるデータオブジェクトがあります。各行は、研究の特定の患者に対応しています。年齢、性別、肥満度指数(BMI)、および血中LDL濃度の列があります。SNPデータを含む他の50万の列もあります。
次のように、現在forループを使用して線形モデルを50万回実行しています。
それはすべてうまくいきます。しかし、私は本当に分析をスピードアップしたいと思います。したがって、私はマルチコア、DoMC、およびforeachパッケージを試してきました。
私の質問は、誰かがforeachスキームを使用してこのコードを適応させるのを手伝ってくれませんか?
どうやら16コアが利用可能なLinuxサーバーでスクリプトを実行しています。foreachパッケージを試してみましたが、それを使用した結果は比較的悪く、foreachを使用して分析を実行するのに時間がかかることを意味します。
たとえば、次のように線形モデルオブジェクトを保存しようとしました。
これには、通常のforループを使用する場合の2倍以上の時間がかかります。これをより良くまたはより迅速に行う方法についてのアドバイスをいただければ幸いです。lapplyの並列バージョンを使用することもオプションである可能性があることは理解していますが、これを行う方法もわかりません。
ではごきげんよう、
アレックス
r - R の by() と lapply() のパフォーマンスに大きな違いがあるのはなぜですか?
xts
複数の銘柄記号の時系列を含むオブジェクトがあります。オブジェクトをシンボル固有のサブグループに分割し、各シンボルのデータを処理してから、行の完全なセットを含む元のマトリックスxts
ですべてのサブグループを再構築する必要があります。xts
各シンボルは、行列をサブグループに分割するための因子インデックスとして使用される 1 ~ 4 文字のフィールドです。
by()
これらは、 、lapply()
およびを呼び出したときにマトリックスを分割するために報告された時間ddply()
です。
データ フレームとマトリックス サブグループの操作に関する詳細については、この優れたブログ投稿を参照してください。
lapply/split.default を使用するとパフォーマンスに大きな違いがあるのはなぜですか?