在R tidyverse中获取感叹号之前的单词

Posted

技术标签:

【中文标题】在R tidyverse中获取感叹号之前的单词【英文标题】:Get the word before exclamation mark in R tidyverse 【发布时间】:2022-01-19 11:26:10 【问题描述】:

我想知道如何获取出现在感叹号之前的单词!我有一个数据框,每行都有不同的字符串。我试过以下:

text %>%
    str_match("!",lines)

我并没有真正得到我想要的,而且我有点迷茫。有人有建议吗?

【问题讨论】:

嗨 - 您能否在此处提供更多示例数据和预期输出 如果您可以发布带有dput() 和预期输出的数据框样本,将会更容易提供帮助。 【参考方案1】:

您可以在! 之前的单词str_extract_all 使用前瞻:

数据:

text <- c("Hello!", "This a test sentence", "That's another test sentence, yes! It is!", "And that's one more")

解决方案:

library(stringr)   
unlist(str_extract_all(text, "\\b\\w+\\b(?=!)"))
[1] "Hello" "yes"   "is" 

如果您寻求dplyr 解决方案:

data.frame(text) %>%
  mutate(Word_before_excl = str_extract_all(text, "\\b\\w+\\b(?=!)"))
                                       text Word_before_excl
1                                    Hello!            Hello
2                      This a test sentence                 
3 That's another test sentence, yes! It is!          yes, is
4                       And that's one more                 

【讨论】:

【参考方案2】:

也许我们可以使用regmatches

> sapply(regmatches(text, gregexpr("\\b\\w+\\b(?=!)", text, perl = TRUE)), toString)
[1] "Hello"   ""        "yes, is" ""

【讨论】:

OP 要求 R tidyverse 解决方案【参考方案3】:

你也可以使用:

> unlist(strsplit("Dog!Cat!", "!"))
[1] "Dog" "Cat"

【讨论】:

如果字符串类似于 That's a dog! Not a cat! 怎么办? @ChrisRuehlemann 好点。

以上是关于在R tidyverse中获取感叹号之前的单词的主要内容,如果未能解决你的问题,请参考以下文章

批处理文件用转义的感叹号替换感叹号

如何在 Linux 上传递带有感叹号的参数?

解决 Eclipse 项目有红感叹号的方法

function与感叹号

转载js中的function与感叹号

TortoiseSVN 红色感叹号