問題タブ [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.

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

r - 行列の平均関数で mapply を使用する

行列の各列 (または行) の隣接する値の平均を計算したい (例: [1,1] と [2,1]、[2,1] と [3,1]、[3, 1] および [4,1]) を使用し、これをすべての列に適用します。

mapply 関数を使用して (for ループの使用を避けるため)、各列の最初の 2 つの値の平均を計算し、これを行列全体に行ごとに適用しようとしました。ただし、値を合計しようとすると機能するように見えるmapplyは、平均関数では機能しません。

以下の例を参照してください。

mean 関数を使用すると、出力は最初の行の値のように見えます。問題は、正しい入力値のインデックス作成にあると思われます。

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

r - data.frameをサブセット化して「x」data.framesを取得する関数にいくつかの「x」引数を渡す方法は?

異なるデータセットを取得するために、1 つの関数に異なる引数を適用することに関連する質問があります。

関数の引数の値に応じて、データを取得してフィルター処理する関数を作成しました (質問の説明が複雑になると考えたため、関数全体を記述していません)。

関数は次のようになります。

関数の引数の潜在的な値を次のように考えると:

すべての引数値に対して 24 の可能な組み合わせが得られます。私の目標は、「varoptions.grid」で取得した引数値のすべての組み合わせを関数で使用することです。結果は 24 の異なるデータセットになるはずです。

私はこれを試しました:

すべてのプロセスで巨大な配列を取得していると思います。mapply の仕組みを理解していないか、問題を解決するために間違ったプロセスを使用していると思います。

これを解決する方法について何らかの意見があれば、私は大いに感謝します!, これは、この問題で立ち往生している私の3日目です:(

お時間をいただきありがとうございました!

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

r - if 条件付きの for ループを使用して新しいベクトルを作成する

R の for ループの問題に直面しています。特定の条件がデータ要素に適用される場合、新しいベクトルを作成する必要があります。ただし、データ セットの最初の 49 列だけを R にループさせたいと考えています。これは私がこれまでに持っているコードですが、R は複数のエラー メッセージを返します。

このコードを実行する方法についての提案をいただければ幸いです。私がやりたいことを説明するために説明を入れようとしました。私が行った調査によると、apply、lapply、または mapply 関数を使用するのが最適かもしれませんが、このコンテキストでそれらを使用する方法がわかりません。

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

r - 多くの任意のサンプル値に対して効率的に経験的density()を見つけます(dnorm()と同様ですが、経験的分布用)

sample.density次のように、サンプルの経験密度 ( ) を定義x.sampleしたとします。

Gここで、予想される密度を知りたい勾配 があるとします。

経験分布に基づくsample.densityの各値の密度はG?

ループを使用するとfor()、次のような答えを得ることができます。

包括的なアイデアは のようなことをすることですがdnorm()、それが指定された平均値と標準偏差で正規分布していると仮定する代わりにx、任意のサンプルから経験的に決定された分布を使用したいと思います統計パッケージに含まれるディストリビューション)。

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

r - R -- キャレットのトレイン機能をデータ フレームのリストに適用できますか?

私は優れた R パッケージのキャレットを使用しており、複数のトレーニング データ セットのリストに対して train 関数を実行したいと考えています。さて、train 関数のドキュメントには、データ引数はデータ フレームである必要があると書かれていることがわかりました。そのため、私がやろうとしていることは単純に不可能であり、これはキャレットの拡張として提案されたほうがよいかもしれませんが、誰かがこれをやろうとしたかどうかを確認してください。

説明のためにソナー データを使用して、2 つのデータ フレームで構成されるリスト (both という名前) を作成しました。それぞれが別個のトレーニング データセットです。次に、リスト内の各要素に train 関数を適用するために mapply を使用しています。残念ながら、恐ろしい結果が得られています。具体的には、pls1.3..A[[2]] のメトリックが pls1.3..B2 のメトリックと同じになることを望んでいました。ご覧のとおり、そうではありません。奇妙なことに、pls1.3..A[[1]] は pls1.3..B1 と一致します。私が間違っていることは明らかですか、それとも(今は)不可能なのでしょうか?(1.4 GHz Intel Core i5 Mac で R 3.1.1 を実行しています。)

再現可能なコード (およびコメントアウトされた出力) は次のとおりです。

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

r - lapply を使用して、R のすべての列の null 変数の割合を一覧表示する

115 列、1000 行の大きな csv が与えられました。列にはさまざまなデータがあり、一部は文字ベースで、一部は整数などです。ただし、データにはさまざまなタイプ (NA、-999、NULL など) の多数の null 変数があります。

私がやりたいことは、列のデータの 30% 以上が何らかのタイプの NULL である列の LIST を生成するスクリプトを作成することです。

これを行うために、1 つの列の NULL パーセンテージ (小数点として) を提供するスクリプトを作成しました。このスクリプトは私にとってはうまくいきます。

すべての列に対してこれを行うスクリプトを書きたいと思います。lapply 関数を使用する必要があると思います。

ここでこれを実行しようとしましたが、このスクリプトをまったく機能させることができないようです:

次のエラーが表示されます。

と:

理想的には、すべての null 変数 (NA、-999、0、NULL) のパーセンテージが 30% を超える、すべての列名のベクトル LIST を提供してもらいたいと考えています。

誰でも助けることができますか?

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

r - mapply で複数のプロットを作成する

次のデータフレームを作成しましたdf

var1また、引数およびに基づいて単純な散布図を作成する関数も作成しましたvar2

次の変数の組み合わせに対して 2 つの特定の散布図のみが必要です:v1-v2v3-v4.

mapplyここでは、さまざまな変数の組み合わせをループするのが便利だと思いました。

私はちょうど2つのプロットを期待していましたが、これは私が代わりに得たものです:

ここに画像の説明を入力

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

r - 入力数が異なる複数のデータフレームに関数のリストを適用する

この質問を参照して、関数に基づいて複数のデータフレームを使用できるかどうか疑問に思っていました。つまり、リンクされた質問の例では、についてのみ説明しましmeansdt-test他の 2 つの関数に2 つのサンプルを追加する必要がある場合は、と に使用data.frameされるもの以外に別のものを使用する必要がmeanありsdます。

このシナリオで何か提案はありますか?

リンクされたスレッドから例をコピーする:

これに関数を含める方法はt.test(df1$col1,df2$col3)

期待される出力: (データフレーム 2x5 で以下のようなもの)

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

r - mapply と integrate を含む関数の高速化

R のコードをいくつか継承しましたが、実行速度が非常に遅くなります。ほとんどの時間は、フォームの関数の評価に費やされます (異なる被積分関数 G を持つ約 15 のそのような関数があります)。

テストのために、次のダミー関数を使用していますが、実際のコードでは、G は exp()、log()、dlnorm()、plnorm() などを含むはるかに複雑です。

F は、最悪のケースで約 200 万回計算されます。関数は次の 3 つの異なる方法で呼び出されます:
t が単一の数値で d が数値ベクトルである、または
t が数値ベクトルで d が単一の数値である、または
t が数値ベクトルであり数値ベクトルである

この関数を高速化する (簡単な) 方法はありますか?

これまでのところ、(ifelse ループを取り除くために) 次の行に沿ってバリエーションを試しました。

しかし、ほぼ同じ時間がかかります。