过滤R数据帧以仅包含两个字符串之间的空格

时间:2017-02-22 21:33:08

标签: r

我有一个如下所示的数据框:

v1 <- c('abies balsamifera','some trees','pizza','i like tacos','pinus taeda')
v2 <- c(1,2,3,4,5)
data <- data.frame(v1,v2)
                 v1 v2
1 abies balsamifera  1
2        some trees  2
3             pizza  3
4      i like tacos  4
5       pinus taeda  5

我想对数据帧进行子集化,仅包括v1中的字符串有两个用空格分隔的单词的行。我想排除只有一个单词的行,或其他包含三个单词的行。结果数据框如下所示:

                 v1 v2
1 abies balsamifera  1
2        some trees  2
5       pinus taeda  5

1 个答案:

答案 0 :(得分:7)

您正在寻找一个由一个或多个单词字符,空格以及一个或多个单词字符组成的字符串。

这是一个描述上述陈述的正则表达式:

> grepl('^\\w+\\s\\w+$', v1)
[1]  TRUE  TRUE FALSE FALSE  TRUE

您可以使用此逻辑向量索引数据框。