問題タブ [sapply]
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 - POSIXctのベクトルでsapplyを使用する
非常に簡単な質問があります。データフレームからPOSIXctオブジェクトの列を処理し、日時文字列のベクトルを生成したいと思います。次のsapplycallを使ってみました
しかし、役に立たない。次のエラーが発生し続けます。
この関数を列の単一のPOSIXctオブジェクトに適用すると、問題はありません。だから私は今、問題が何であるかについて困惑しています。POSIXctオブジェクトで何か特別なことをする必要がありますか?
r - POSIXct と sapply のベクトル
format
POSIXct オブジェクトのリスト以外の関数を適用したい場合はどうすればよいでしょうか? たとえば、時間のベクトルを取得し、それらの時間を 1 時間に切り捨て、それらの時間のそれぞれに任意の関数を適用するとします。
さて、私は の長さobs.truncated
が 3 になると予想しますが、
apply
したがって、このベクトルに対して関数を実行しようとしてもうまくいかないことがわかります。のクラスobs.truncated
は
ここで何が起こっているのか分かりますか? ベクトルの最初の要素を独自のリストとして取っているように見えますapply
。length
r - グループ化関数 (tapply、by、aggregate) と *apply ファミリー
R で何か "map"py を実行したいときはいつでも、通常はapply
ファミリ内の関数を使用しようとします。
しかし、私はそれらの違いを完全には理解していませんでしsapply
たlapply
.私が欲しいものを手に入れるまで、それらすべてを調べてください。
誰かがいつどちらを使用するかを説明できますか?
私の現在の(おそらく間違っている/不完全な)理解は...
sapply(vec, f)
: 入力はベクトルです。output は vector/matrix であり、 elementi
はであり、複数要素の出力があるf(vec[i])
場合は行列が得られますf
lapply(vec, f)
: と同じsapply
ですが、出力はリストですか?apply(matrix, 1/2, f)
: 入力は行列です。出力はベクトルで、要素i
は f(行列の行/列 i) です。tapply(vector, grouping, f)
: 出力は行列/配列であり、行列/配列の要素はベクトルf
のグループ化の値であり、行/列の名前にプッシュされますg
g
by(dataframe, grouping, f)
:g
グループ化します。f
グループ/データフレームの各列に適用されます。f
グループ化と各列の値をきれいに印刷します。aggregate(matrix, grouping, f)
: に似てby
いますが、出力をきれいに印刷する代わりに、集約はすべてをデータフレームに貼り付けます。
副次的な質問: 私はまだプライヤーやリシェイプを学んでいません。これらすべてを完全に置き換えますかplyr
?reshape
r - 行列またはデータフレームのすべての行に関数を適用します
2行の行列と、引数の1つとして2ベクトルをとる関数があるとします。行列の各行に関数を適用して、nベクトルを取得したいと思います。Rでこれを行う方法は?
たとえば、次の3つのポイントで2D標準正規分布の密度を計算したいと思います。
out
?の各行に関数を適用する方法
指定した方法で関数へのポイント以外の他の引数の値を渡す方法は?
performance - 「sapply」コマンドを書き直してパフォーマンスを向上させる方法は?
〜1,300,000行と4列の「d」という名前のdata.frameと、〜12,000行と2列の「gc」という名前の別のdata.frameがあります(ただし、以下の小さな例を参照してください)。
「d」は次のようになります。
そして、ここに「gc」があります:
「d」の 1 列目と一致する「gc」のデータを組み込むことで、「d」に 5 列目を追加したいと考えています。今のところ私はsapplyを使用しています。
しかし、実際のデータでは、「非常に長い」時間がかかります(30分以上「system.time()」でコマンドを実行していますが、まだ完了していません)。
これを巧妙な方法で書き直す方法について何か考えがありますか? または、おそらく「並列」オプションを使用してplyrの使用を検討する必要がありますか (コンピューターに 4 つのコアがあります)。このような場合、最適な構文は何でしょうか?
前もって感謝します。
r - Rのデータフレームの各行に関数を適用します
重複の可能性:
Rの行列(またはデータフレーム)のすべての行に関数を適用する方法
データフレームの各行に関数を適用したいのですが、Rはデフォルトで各列に関数を適用します。それ以外の方法で強制するにはどうすればよいですか?
私は次のようなものが欲しかった
r - sapply ヘルプによる R コーディングの改善
私は少しコードに苦労しています。非常に非効率的に動作させることができますが、それを修正するためのより良い方法があるに違いないと考えました。複数の異なる変数から変数をコンパイルしようとしています。コード化された変数では、「スキップ」は特定の数値としてコード化されます (以下の例では「99」)。これらの変数のうち 10 個に基づいて、合計コスト変数を作成しようとしています。
このようにして、次のように動作する非効率的なコードを作成しました。
sapply
コマンドを使用してこれをもう少しエレガントにしようとしましたが、うまくいきませんでした。コードが失敗する理由について、誰かがヒントや助けをくれるかどうかを確認しようとしていました。私はそれをリスト環境に入れ(cbindのような他のものを試した後、正しいと思います)、特定の呼び出しを実行しようとしましたが、エラーが発生しました。サンプルコードとして、以下を設定しました。
問題は、実際のコード (またはこのコード) を試すと、次のようになることです。
明らかに私は何か間違ったことをしていますが、それが何であるかはわかりません。ifelse のヘルプファイルを見ましたが、出力されるエラーメッセージがわかりません。非効率的な方法でコードを実行するようになりましたが、R での今後のコーディングを改善する方法についてフィードバックと知識を得たいと思っています。
ありがとう!
r - データフレームの特定の列間で行ごとに連結します
文字列として(行方向に)連結すると、データフレームを目的の形式に分割できる列を持つデータフレームがあります。
各行について、列F、E、D、およびCのデータを文字列に連結します(アンダースコア文字を区切り文字として使用)。以下は、これで失敗した試みです。
そして、以下は望ましくない結果です:
どんな助けでも大歓迎です。
function - sapply関数のNAを無視する
私はRを使用していて、答えを探し回っていますが、同様の質問を見ましたが、それは私の特定の問題には機能しませんでした。
私のデータセットNA
では、分析の一部が完了したらプレースホルダーに戻るため、プレースホルダーとして'sを使用しようとしています。したがって、すべての計算をNA
'sがないかのように実行できるようにしたいと思います。本当にありません。
これがサンプルデータテーブルに関する私の問題です
エラーが発生しました:
ご存知のように、sapply関数に問題があります。それらを無視する方法についてNA
のアイデアはありますか?na.omit
以前の場所にすべての'を正しく挿入できるかどうか試してみNA
ますが、その方法がわかりません。
r - 「...」と「複製」の使用
のドキュメントにsapply
はreplicate
、使用に関する警告があります...
今はそのように受け入れることができますが、その背後にあるものを理解したいと思います. だから私はこの少し不自然な例を作成しました:
おそらく、私は明らかに恐ろしく間違ったことをしたのでしょうが、この結果はかなり動揺しています。outerfunction
上記のすべての への呼び出しで、次の出力が得られる理由を誰でも説明できます。
私が言ったように:ドキュメントはこれについて警告しているようですが、なぜそうなのかわかりません。