これはよくある問題だと思いますが、私はかなりのウェブページを見つけました。RのREGEX:文字列から単語を抽出する
私はREGEXを初めて使いました。これをRで使用して、最初の数語を文から抽出したいと思います。例えば
、私の文章は
z = "I love stack overflow it is such a cool site"
ID私は最後の4が必要な場合(私は最初の4つのワードを必要とする場合)
[1] "I love stack overflow"
か(あるとして、私の出力を持っているのが好きであれば言葉)当然の
[1] "such a cool site"
、以下の作品
paste(strsplit(z," ")[[1]][1:4],collapse=" ")
paste(strsplit(z," ")[[1]][7:10],collapse=" ")
しかし、私は非常に巨大なファイルに対処する必要があるとして、私は、パフォーマンスの問題のための正規表現のソリューションを試してみたいと思います(ともそれについて知るために)私は を含め、いくつかのリンクを見て
Regex to extract first 3 words from a stringと http://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in-a-string.html
はので、私は他のものを試してみましたが、それは通常どちらかの文字列全体を私に返さ
gsub("^((?:\S+\s+){2}\S+).*",z,perl=TRUE)
Error: '\S' is an unrecognized escape in character string starting ""^((?:\S"
のようなものを試してみました、または空文字列。
substrのもう1つの問題は、リストを返すことです。多分大規模なファイルを扱い、適用することをするとき[[]]
オペレータが物事をちょっと遅くする(??)ように見えるかもしれません。
Rで使用されている構文が多少異なるようですか?感謝! ありがとう!
R正規表現ではダブルエスケープを使用する必要があります。 '\ S' - >' \\ S' –
使いやすく、正規表現を知る必要のない 'stringi :: stri_extract_all_words(z)[[1]] [1:4]'を試すこともできます。あなたは言葉を別々の価値観にするでしょうが。 –
私はあなたの以前の質問で共有していたのと同じアイデアを使用できませんでしたか?(http://stackoverflow.com/questions/33785594/manipulate-char-vectors-inside-a-data-table-object-in -r)?すでに@stribizhevによって指摘されているように、Rのバックスラッシュを二重にするだけです。 – A5C1D2H2I1M1N2O1R2T1