假设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的过滤函数中使用,以实现我的目标。
谢谢你的帮助。
1条答案
按热度按时间a14dhokn1#
扩展到alistaire和王志强的评论,你想要的是以下内容:
字符串
然后
grep(pattern, vec_b, value = TRUE)
或str_subset(vec_b, pattern)
将工作。[:punct:]
为任何标点字符添加匹配(有关详细信息,请参阅here)。