想象一个 Dataframe ...
df <- rbind("A*YOU 1.000 0.780", "A*YOUR 1.000 0.780", "B*USE 0.800 0.678", "B*USER 0.700 1.000")
df <- as.data.frame(df)
df
...打印...
> df
V1
1 A*YOU 1.000 0.780
2 A*YOUR 1.000 0.780
3 B*USE 0.800 0.678
4 B*USER 0.700 1.000
......并且我想删除其中不包含列表(这里称为tenables)tenables <- c("A*YOU", "B*USE")
中任何元素的任何行,因此结果变为:
> df
V1
1 A*YOU 1.000 0.780
2 B*USE 0.800 0.678
有什么解决的办法吗?非常感谢。
3条答案
按热度按时间9o685dep1#
因为在
tenables
中有正则表达式特殊项(*
的意思是“0个或多个前面的字符/类/组”),我们不能在grep
调用中使用fixed=TRUE
。因此,我们需要找到这些特殊字符并对其进行反斜杠转义。从那里,我们将添加\\b
(字边界),以区分YOU
和YOUR
,其中添加空格或任何其它字符可能是过度约束的。正则表达式解释:
mxg2im7a2#
yhxst69z3#
一种方法是在 df 的
strsplit
列上使用sapply
,分别只查看A*YOU 1.000 0.780
的第一个条目。