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"

编辑:如果你想然后转换回一个句子,说我将匹配项存储在一个名为的对象中matches

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

lapply(matched, sentencify)

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

这是一种方法,假设您有一个要检查的列表:

> 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 回答
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 回答