如何使用R中的grep选择完全匹配以对数据帧进行子集化

时间:2015-08-25 15:34:07

标签: r grep

我尝试使用<{1}}中的修正,但它匹配data[grep(14,data$x,fixed=TRUE),]data$x == 14或其data$x == 1144中包含14行的任何行} field。

2 个答案:

答案 0 :(得分:0)

您可以在正则表达式中使用\\b来检测字边界。

例如:

data <- data.frame(field=c(14,1144,"test14test","test 14 test"))
grep("\\b14\\b",data$field)
#[1] 1 4

如果data$field只是数字,那么@Pierre Lafortune的解决方案可能更合适。

答案 1 :(得分:0)

grep()函数匹配一个模式,这就是为什么它匹配&#34; 14&#34;和&#34; 1144&#34;正如皮埃尔在评论中指出的那样,你可以将模式改为正则表达式&#34; ^ 14 $&#34;。 ^要求它以该模式开始,并且$要求它以该模式结束。这将使你完全匹配。

分组数据的另一个好方法是使用subset()函数。

data_subset <- subset(data, x == "14")