問題タブ [stringi]
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 - gsub 速度 VS パターン長
私はgsub
最近広範囲に使用しており、短いパターンは長いパターンよりも速く実行されることに気付きましたが、これは当然のことです。完全に再現可能なコードは次のとおりです。
a
ご覧のとおり、複製された時間を含むパターンを探していますrpt[n]
。傾きは予想通り正です。fixed=T
ただし、300 文字と 600 文字のねじれに気付き、fixed=F
傾斜はほぼ以前と同じように見えます (以下のプロットを参照)。メモリやオブジェクト サイズなどが原因だと思います。また、許容される最長pattern
シンボルは 1463 シンボルで、オブジェクト サイズは 1552 バイトであることに気付きました。
300 文字と 600 文字で、キンクをよりよく説明できる人はいますか?
追加: 私のパターンのほとんどは 5 ~ 10 文字の長さであり、実際のデータ (inp
上記の例のモックアップではありません) で次のタイミングが得られることに注意してください。
(私は 4k パターンを持っているので、モジュールの合計タイミングは約 200 秒です。これは、gsub と fixed = TRUE で正確に 0.05 x 4000 です。これは私のデータとパターンにとって最速の方法です)
r - アーカイブから stringi ライブラリをインストールし、ローカルの icu52l.zip をインストールする方法
実稼働環境でいくつかの R コードを機能させることを試みており、その一環として、次のようにいくつかの R パッケージをインストールしています。
これは R パッケージをインストールする最もエレガントな方法ではないかもしれませんが、私たちにとっては問題ないようです (R パッケージ管理に関する他のヒントは歓迎されますが、この段階では少し遅れます :)。
ただし、stringi パッケージは、ネットワーク経由でインストールされる icu52l パッケージに依存しているようです。
ローカル コピーを探すように指示するにはどうすればよいでしょうか。出力には、リモートの場所 ( http://static.rexamine.com/packages/icudt52l.zip ) が簡単に含まれているため、自分でどこかに置くことができますが、どこにあるかは不明です。
たぶん、私たちはこれを完全に間違った方法で行っているかもしれませんが、どんな助けや指針も歓迎します.
私たちはubuntuマシンを使用しており、libicu42とlibicu-devのインストールも試みましたが、どちらも役に立たないようです。
r - R の data.table の stri_split_fixed
次のようなdata.tableDT
があります。
V2
「<<」で列を分割し、2 つの新しい列で出力を取得しようとしています。
次のように使用してそれを行うことができましたstringi
:=
ただし、演算子を使用して参照することで同じことをしたいと思います。data.table を使用してこれを行う方法は?
RHSの部分に問題があります。
stri_split_fixed(DT$V2, "<<", 2)
長さ 2 の文字ベクトルを持つ 3 つのリストを返します。長さ 3 の文字ベクトルを持つ 2 つのリストを取得するにはどうすればよいですか?
r - 辞書内の単語の値に基づいて文のスコアを取得する
編集 df
し、dict
文を含むデータフレームがあります:
そして、単語とそれに対応するスコアを含む辞書:
df
各文のスコアを合計する列「スコア」を追加したい:
予想された結果
アップデート
これまでの結果は次のとおりです。
アクランのメソッド
提案 1
このメソッドが機能するためにはdata_frame()
、作成するために使用する必要がdf
ありdict
、data.frame()
それ以外の場合は次のようになることに注意してください。Error in strsplit(text, " ") : non-character argument
これは、1 つの文字列での複数の一致を考慮していません。期待される結果に近いですが、まだ十分ではありません。
提案 2
コメントで akrun の提案の 1 つを少し調整して、編集した投稿に適用しました
これは、文字列内の複数の一致を考慮していません。
リチャード・スクリヴェンの方法
提案 1
すべてのパッケージを更新した後、これは機能するようになりました (ただし、複数の一致は考慮されません)。
提案 2
これにより、同じ結果が得られます。
提案 3
これは実際に機能します:
Thelatemail の方法
部分を追加したことに注意してくださいcbind()
。これは実際に期待される結果と一致します。
最終的な答え
akrun の提案に触発されて、これが私が最終的に最もdplyr
風変わりな解決策として書いたものです。
最も効率的であるため、Richard Scriven の提案 #3 を実装します。
基準
を使用して、はるかに大きなデータセット ( df
93 文とdict
14K 単語) に適用される提案を次に示しmicrobenchmark()
ます。
そして結果:
regex - Rの文字ベクトルのすべての要素でダッシュをドットに置き換える方法は?
Rの文字ベクトルのすべての要素でダッシュをドットに置き換える簡単な方法はありますか?
パッケージでヘルプを探していましstringi
たが、答えが見つかりませんでした。機能はありstri_substitute
ますが、使い方がわかりません。
regex - Rのstri_regexでpropoer情報を抽出するために使用する正規表現はどれですか?
gdac.broadinstitute.org_
Rでその文字のこの単語の後に来る名前を抽出しようとしています
stri_extract
パッケージから使用してstringi
いますが、正規表現についてあまり知らないようです。私はこのようなことを試しました:
誰でも助けることができますか?
r - Rで「^」に基づいて文字列を分割する
前にすべての文字を分割して取得する必要があります^
例:データフレームに次の列があります
同じデータフレームの結果列は次のようになります。
stringr
、strsub{base}
、stringi
、を使ってみgsubfn
ました。しかし、彼らは奇妙な結果を投げてい^
ます。^
ただテーブルが大きいので 交換できません。
r - stringi と gsub を使用した異なる出力 (同じ文字列で同じパターンを使用)
gsub と stringi を使用して 2 つの異なる出力文字列を取得する理由を知りたいです。メタ文字「。」stringi に改行を含めませんか? stringi は「行ごと」に読み取りますか?
ちなみに、stringi で「正しい」置換を実行する方法が見つからなかったため、ここでは gsub を使用する必要がありました。