問題タブ [mapply]
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.
r - マッププライの基本?-2つのベクトルと関数から行列を作成する方法
グラフを作成するためのdata.frameを作成しようとしています。2つの入力として使用したい関数と2つのベクトルがあります。これは少し単純化されていますが、基本的に私が持っているのは次のとおりです。
必要なのは、avgGPA値用に3列、relGPA値用に16行で、結果の値がセルに含まれるdata.frameだけです。
これがいかに基本的であるかをお詫び申し上げますが、私はあなたの助けなしにこれを実現しようとしたことを保証します。sapplyとmapplyのmanページの例に従ってみましたが、Rには少し慣れていないので、何をしようとしているのかわかりません。
ありがとう!
r - mapply にリストを返すように強制しますか?
データ フレームを作成する関数があるとします。以下のように、さまざまな入力値でその関数を実行し、結果を 1 つの大きなデータ フレームにまとめて rbind したいと思います。
私の CreateDataFrame 関数は 3 つの引数を取ります。上記の例では、2 番目と 3 番目の引数は一定に保たれます。上記と同じことをしたいのですが、呼び出しごとに 2 番目と 3 番目の引数を変更します。次のように、mapplyを使用する必要があると思います:
mapply がリストを返さないため問題が発生しており、実行できませんdo.call(rbind, mapply(...))
。上の例のように、単一のデータ フレームを作成するにはどうすればよいですか?
mapply がリストのマトリックスを返しているようです。データフレームのリストを返すことを期待していました。どうすればいいですか?
r - 数値の各範囲内にある数値を効率的にカウントする
以下の問題に対するより迅速な解決策を探しています。小さな例で問題を説明し、大きなデータをシミュレートするコードを提供します。これがこの質問のポイントです。私の実際の問題のサイズは、リストの長さ = 100 万エントリです。
以下に示すように、2つのリストがあるとします。
x と y のプロパティ:
- リストの各要素の
x
合計は常に 100 になります。 - の各要素は
y
常にソートされ、常に 1 から 100 の間になります。
問題:
さて、私が欲しいのはこれです。とをとっx[[1]]
てy[[1]]
、1) <= 82 および 2) > 82 および <= 100 である数字の数を見つけたいと思いますy[[1]]
。これは c(4, 1) になります。数字 <= 82c(1,2,3,55)
は83と100はc(90)
. x[[2]]
とy[[2]]
、c(0, 2, 1)についても同様です。つまり、答えは次のようになります。
これがまだ不明な場合はお知らせください。
100 万エントリのシミュレートされたデータ
私がこれまでに行ったこと:
使用mapply
(遅い):
最初にand (2つのリストを使用rank
した明らかな選択)を使用することを考え、これを試しました:ties.method="first"
mapply
これは問題なく機能しますが、1M エントリではかなりの時間がかかります。rank
コンピューティングのオーバーヘッドとdiff
それが何度も追加されると思います。これには241 秒かかります。
したがって、 「グループ」列を使用してソートすることで、andrank
の使用法を克服することにしました。以下に示す、より長いがはるかに高速なソリューションを思いつきました。diff
data.table
使用data.table
(高速):
これには26 秒かかります。つまり、約 9 倍高速です。このような 100 万個の要素を 5 ~ 10 個再帰的に計算する必要があるため、さらに高速化できるかどうか疑問に思っています。ありがとうございました。
r - mapply を使用して、関数を使用してベクターによって要素ごとにベクターを変換する
の使用に関して質問がありますmapply
。
次の 2 つのケースを考えてみましょ う。mapply を使用して、ベクター k を要素単位で変換し、ベクター trans に格納されている関数を使用します。これは機能します(この質問に関連)
ケース 2では、似たようなことをしたいのですが、追加の関数引数 (ここでは a に格納されています) が必要です。ただし、n 個の関数引数が必要な場合があります。この例で得られるのは、期待される結果が対角線上にある 3x3 行列です。対角線の計算された出力のみが必要です。どのように?
r - リストに一意の列名を追加する mapply
リストがあるとします:
次に、各リスト要素に列を追加したいと思います。その列の名前は異なります。
そして答えは
それは私が期待するものではありません。答えは次のとおりです。
Update
:
私が使用する場合SIMPLIFY=FALSE
r - 関数を 2 つのリストに適用しますか?
2 つの行列 X と Y の行方向の相関を見つけるには、出力に X の行 1 と Y の行 1 の相関値が含まれている必要があります。したがって、合計で 10 個の値になります (10 行あるため)。
さて、この関数を 2 つのリスト (それぞれ約 50 個のデータフレームを含む)にどのように適用すればよいでしょうか?
リスト A に $1、$2、$3 などのデータフレームがあり、リスト B に同様の数のデータフレーム $1、$2、$3 があるとします。そのため、リスト内の他のデータフレームに対して、関数をlistA$1,listB$1
and ... などに適用する必要があります。listA$2,listB$2
最終的に、比較 1 (listA$1
およびlistB$1
) の場合とその他の場合も同様に、10 個の値が得られます。
これは「lapply」を使用して行うことができますか?
r - Rでmapplyに代わる効率的な方法はありますか?
これが私がテストしようとしているサンプルデータとコードです:
この場合、本当に使用する必要があるかどうか疑問に思っていmapply
ました。操作を実行するより効率的な方法はありますか?
python - R: 大きなデータ フレーム内の 2 つの文字列を比較する
だから、私は2列の文字を持つ非常に巨大なデータフレームを持っています。文字は、「;」で区切られた ID 値です。したがって、これら 2 つの列の間で共通する ID 値の数を計算したいと思います。次に例を示します。
したがって、この場合、最初の行には 1 つの共通値があり、2 番目の行には 2 つの共通値があります。
テーブルのサイズは 60M レコードで、一部の文字列の長さは 1000 を超える場合があります。データをテキストファイルに書き込んでpythonで解析しようとしたのですが、ファイルサイズが30GBあります。Rでこれを行うアイデアはありますか? (正規表現、適用、..)
次のコマンドで、共通値の数を数えることができます。
したがって、私は関数を書きました:
単一の呼び出しで試してみると機能しますが、以下のように mapply で使用すると、すべての列が出力されますが、出力には数値のみが必要です。
では、なぜ最初の列も出力するのでしょうか? コマンドの何が問題になっていますか?
r - R: 上の行の値に基づいて行の値を変更する
以前にも同様の質問をしましたが、私の説明が不十分だったようです。32 列の data.frame があります。この特定の基準を満たす各行の下に複製行を作成したい
DWin からの提案に従って、次のコードを使用してこれを達成しました。
これで十分に機能しますが、「親」行と新しく作成された重複行の値の一部を変更する必要があります。親行の変数actionとtimeを次のように設定する必要があります。
重複する行には、変数actionとtimeをに設定する必要があります
以下は、データの構造を示す data.frame の例です (元のデータベースにはさらに多くの列があります)。
最終的な df は次のようになります。
ありがとう、ティム