R语言筛选列字符串以特定词开头的行,^word不生效如何解决?
R语言筛选首个分类为Thriller的电影记录解决方案
正则不生效的原因
你之前使用^Thriller格式的正则匹配失败,是因为genre列的所有字符串都以['开头,字符串首个字符是左方括号,不可能直接匹配到开头位置的Thriller。
正确实现代码
library(dplyr) library(stringr) # 筛选首个分类为Thriller的行 thrill_first <- dfUSARating %>% filter(str_detect(genre, "^\\['Thriller"))
代码说明
- 管道操作中直接使用列名
genre即可,不需要加dfUSARating$前缀,避免匹配到外部环境的同名变量 - 正则
^\\['Thriller的匹配逻辑:^锚定字符串的起始位置\\[转义匹配字面量左方括号(方括号属于正则特殊字符,R字符串中需要写两个反斜杠实现转义)'匹配单引号,后续紧跟Thriller,刚好对应第一个分类为Thriller的记录
- 如果你的数据中存在
['后带空格的情况,可以把正则修改为^\\['\\s*Thriller,\\s*会兼容0个或多个空白字符的场景。
内容的提问来源于stack exchange,提问作者RNewbie
相关产品推荐
相关产品推荐

