問題タブ [grepl]
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.
regex - Rでgreplを使用した完全な単語照合
次の例を考えてみましょう。
しかし、私が欲しいのは、それが単一の単語として独立している場合にのみ「is」と一致することです。Perlのドキュメントを少し読んだところ、これを行う方法は\ bを使用することであるように見えました。これは、パターンの前後にあるものを識別するために使用できるアンカーです。つまり、\ bword\bは「word」と一致しますが「sword」とは一致しません。 '。そこで、「TRUE」に設定されたPerl構文を使用して、次の例を試しました。
私が探している出力はですFALSE TRUE
。
r - grepl() を使用した文字列のリストに基づくサブセット?
私は一見非常に単純なことをしようとしています。ループを構築せずに、いくつかの異なるフレーズで grepl() コマンドまたはそれに似たコマンドを使用して、R のデータ フレームをサブセット化したいと考えています。
たとえば、Bob または Mary という名前のすべての行を取り出したいとします。
どんなアイデアも役に立ちます!
r - 空の grep 以外のすべてをサブセット化すると、空のベクトルが返されます
正規表現に一致しない要素にサブセット化したい文字ベクトルがあるとします。演算子を使用して、一致-
するサブセットを削除できます。grep
一致したエントリを除くすべてが返されます"d"
。しかし、見つからない正規表現を検索すると、期待どおりにすべてが返されるのではなく、何も返されません。
なぜこれが起こるのですか?
r - grepl & which を使用して、時系列データで正確な文字列分割を検証する
元のタイムスタンプに日付と時刻が連結された 1 分間の太陽光発電間隔の時系列データを使用しています。sub() を使用して日付と時刻を分割し、cbind() を使用してそれらをデータフレームに追加しました。最初はすべて問題ないように見えますが、日付と時刻が元の文字列と一致することを確認する小さなエラー チェッカーを構築したいと思います。一致しない場合は、さらにトラブルシューティングするために行インデックスを返します。私の考えは、一致/不一致を識別するために grepl + which を使用することです。以下のコードは、私が何を扱っているかを示しています。
上記の which() の結果は、日時列の文字列に「23:56」を含むすべての行に対応します。スペースを節約するために、戻りベクトルの 1 行だけをコピーしました...
私のチェッカーでは、偽のケースを特定したいことはわかっています。今のところ、説明のために TRUE を使用しています。私が抱えている問題は、grepl() で複数の文字列を使用することに関連しています。これは、1 つの時間値だけでなく、データフレーム内のすべての行に対して実行したいからです。grepl で mapply を使用しようとしましたが、データフレームには 478,933 の観測があるため、時間がかかりました。mapply + grepl は次のようになります。
観測範囲 (200) だけで同じ mapply 関数を使用しました。これがTRUEに設定されている場合、200行のインデックスを取得し、FALSEを使用するとinteger(0)を取得します-これは、データが正確であることを意味するため、これはすべて不要である可能性があることを理解しています...しかし、今、私は問題に投資していますより多くの学習/演習の観点があり、将来、より大きなデータセットを扱う際に役立ちます。
長い質問で申し訳ありません。ご提案いただきありがとうございます。
パート2:
再現可能なデータを提供できなかったことをお詫び申し上げます。データが大きすぎて、データフレーム全体を SO に投稿できません。また、@ G.Grothendieck、tapply または split を使用して各時間間隔のサンプリング分布を取得するため、日時文字列を分割しています。つまり、1 日の各分に対応する 1,440 個の「バケット」があります。各バケットは、1 年全体からのその時間間隔での観測によって満たされます。
これは、data2 の先頭である新しいバージョン (data3) です。data3[3,2] の値を「23:57」に変更しました。これは、datatime 列の時間と一致しないため、これを使用して両方のソリューションをテストできます。Justin's が最初で、G.Grothendieck がそれに続きます。
したがって、どちらも同じ結果になります...ただし、データフレーム全体 (data2) で G.Grothendieck のソリューションを使用すると、行 840:24279 が不一致であるとのことでした。出力の最初の 2 行を次に示します。
不一致の最初の 6 行を新しい df (data4) に入れました。次に、各ソリューションを再度適用しました...
これは、ソリューションが同じであることを再度示していますが、データフレーム全体 (data2) で G.Grothendieck を使用すると、840:24279 が不一致として出力される理由がわかりません。このデータで十分かどうか教えてください。
regex - R: 「+」文字で grep() できませんか?
ここに私のデータがあります:
"+"
をから分離することを期待"-"
して、次のコマンドを実行してみました。
同じgrepl()
コマンドが では機能するのに では機能しない理由がわかり"-"
ません"+"
。
r - df 列のフィルタリング、systemIds + 文字 + 数値、sapply、grepl による結果のフィルタリング
質問のサンプル df を作成すると、2 番目の質問が発生しました。最初の第 2 四半期:
Q2: 混合データ型の df を生成するより効率的な方法はありますか? これが私の試みです:
Q1: データ フレーム フィールドをフィルタリングしていますが、フィルター ステートメントを組み合わせると、フィルタリングが部分的に逆になります。
これら 2 つのステートメントの結果は、私が望む結果をもたらします。
これらのステートメントを組み合わせて同じ結果を生成できますか? いくつか試してみましたが、どれもうまくいきません。例、
コメントありがとうございます。
r - R の異なる行から文字列を連結する
次のようなRデータフレームがあります
私は現在grepl
、列 data.character に検索文字列があるかどうかを識別するために使用してい"<str>"
ます。data.1
例えば。私がそれを使用grepl(str1,data.character)
すると、2行が返されdf$data.1
、次のような出力が必要です
a,c
( data.character に str1 を含む行)
現在、2 つの for ループを使用していますが、これが効率的な方法ではないことはわかっています。誰かがよりエレガントで時間のかからない方法を提案できるかどうか疑問に思っていました.