R语言 仅包含某些中文字符的行的筛选条件

nc1teljy  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(120)

假设table_a由大约1,500个唯一汉字的列组成,并且table_b由大约50,000个唯一汉字组合(多字符短语、句子等)的列组成。不同的长度)。
我希望能够过滤table_b,并只返回字符组合only包含table_a中字符列中字符的行。理想情况下,此代码还应忽略任何字母数字字符和标点符号。
有没有一种方法可以很容易地在R中做到这一点,最好是在基R中,或者用tidyverse中的函数(dplyr,stringr等)?我考虑过使用stringr包和正则表达式,但我不熟悉如何处理中文字符。
为了稍微简化问题,考虑以下示例:

vec_a <- c("你","好","吗","不")
vec_b <- c("你好","你好吗?","我很好","我不好")

字符串
从这两个列表中,我想返回vec_c,也就是c("你好","你好吗?")
我认为无论使用什么逻辑/函数,都可以在dyplyr的过滤函数中使用,以实现我的目标。
谢谢你的帮助。

a14dhokn

a14dhokn1#

扩展到alistaire和王志强的评论,你想要的是以下内容:

pattern = paste0("^[", paste(vec_a, collapse = ""), "[:punct:]]+$")

字符串
然后grep(pattern, vec_b, value = TRUE)str_subset(vec_b, pattern)将工作。
[:punct:]为任何标点字符添加匹配(有关详细信息,请参阅here)。

相关问题