2

次の文があります。

**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**

関連すると定義されている単語のみを抽出したいと思います: I, WANT, ONLY, THESE, WORDS, NEXT, STEP。他のすべての文字 (数字、英字、特殊記号) は文から削除する必要があります。

この場合、結果の文は次のようになります。

I WANT ONLY THESE.

私はこれらのような行を何千も持っており、それぞれが有用な単語の間に独自の文字セットを持っています. Rでこれらを取り除く効率的な方法はありますか?

4

3 に答える 3

9
string <- "**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**"
regmatches(string, gregexpr("I|WANT|ONLY|THESE|WORDS|NEXT|STEP", 
                            string))

[[1]]
[1] "I"     "WANT"  "ONLY"  "THESE"

EDIT:その後、文に変換したい場合は、次のオブジェクトに一致を保存するとしますmatches

sentencify <- function(sentence){
  paste0(paste(sentence, collapse=" "), ".")
}

lapply(matched, sentencify)

[[1]]
[1] "I WANT ONLY THESE."
于 2013-04-15T11:46:33.757 に答える
2

関連する単語のリストがない場合は、hunspell自動的に作成してください:)

> system(paste('echo "', gsub('\\W', ' ', '**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**'), '" | hunspell -G -d en_US'))
I
WANT
ONLY
RA
THESE
于 2013-04-15T11:54:27.560 に答える
2

チェックするリストがあると仮定した場合の 1 つのアプローチを次に示します。

> mystring2 <- "**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**"
> mystring2
[1] "**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**"
> temp <- strsplit(mystring2, "[^a-zA-Z]")[[1]]
> myWords <- c("I", "WANT", "ONLY", "THESE", "WORDS", "NEXT", "STEP")
> temp[temp %in% myWords]
[1] "I"     "WANT"  "ONLY"  "THESE"
于 2013-04-15T11:46:41.800 に答える