子集不是基于完全匹​​配,而是基于R的部分

时间:2014-01-28 14:32:35

标签: regex r substring

这是一个后续问题: Subsetting a string based on pre- and suffix

当你有这个命令时:

    d <- subset(b, b$X %in% test)  

此命令在b$X中查找与test完全匹配的所有内容。如何操纵它以说明b$X中的值包含test? 即如果b$X的值为"something"test的值为"thing"。然后我会认为这是一场比赛。

重要更新!测试有512个值,不仅如示例中的那样。

2 个答案:

答案 0 :(得分:11)

您可以将%in%替换为grepl

# examples
x <- c("thing", "something", "some", "else")
test <- c("thing", "some")

# exact match
x %in% test
# [1]  TRUE FALSE  TRUE FALSE

# substring match (regex)
pattern <- paste(test, collapse = "|") # create regex pattern
grepl(pattern, x)
# [1]  TRUE  TRUE  TRUE FALSE

完成任务的整个命令:

d <- subset(b, grepl(paste(test, collapse= "|"), b$X))

"|"表示正则表达式中的逻辑

答案 1 :(得分:0)

子集中不需要b $。

d <- subset(b, grepl(paste(test, collapse= "|"), X))