在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中获取感叹号之前的单词的主要内容,如果未能解决你的问题,请参考以下文章