我有一个包含两个字符串向量的 Dataframe ,例如
Xsz<-c("A", "B", "C")
Xal<-c("A|B", "A|C", "B|C")
XDF<-data.frame(Xsz,Xal)
我想过滤这些行,其中第一列(Xsz)中的字符串出现在第二列(本例中为第1行和第3行)
我试过这个:
XDF %>%
filter(Xsz %in% Xal)
或者这个:
XDF %>%
filter(grep(Xsz, Xal))
但是他们做的不一样,实际的 Dataframe 当然不是3行长,而是像60M ...:-)
谢谢您的建议!
4条答案
按热度按时间wtlkbnrh1#
基本R方法是使用
apply
进行索引,其中grepl
跨行:iih3973s2#
看起来你想用
Xal
作为正则表达式的模式。你不能很容易地用grepl
来做这个,因为它一次搜索一个模式,你有一个模式向量。你可以用stringr::str_detect()
来代替。创建于2023年3月1日,使用reprex v2.0.2
w1e3prcc3#
另一个基本R选项使用
sapply
和grepl
,如下所示:创建于2023年3月1日,使用reprex v2.0.2
c9qzyr3d4#
如果需要完全匹配,您可以