R数据帧中的regexp出错

时间:2015-12-09 16:32:47

标签: r

我有一个名为product的数据框,带有可变电子邮件。

我想过滤这些值并将它们存储到另一个数据框中。不幸的是,我的下面的代码给了我一个错误"子集必须是逻辑的" ?

newdataframe<-subset(product,regexpr("/^([0-9]*)_",email))

在这里,我检查所有以numbersequence开头的电子邮件地址,然后用下划线

1 个答案:

答案 0 :(得分:2)

评论中的人们在我做的前一刻就到了,但我也建议:

product[grep("/^([0-9]*)_", product$email),]

错误的原因是正则表达式返回与模式匹配的值的索引。另一方面,subset()需要逻辑,如

subset(product, email == "youremail@email.com") 

这是道路的可重复示例:

> head(diamonds)
  carat       cut color clarity depth table price    x    y    z
1  0.23     Ideal     E     SI2  61.5    55   326 3.95 3.98 2.43
2  0.21   Premium     E     SI1  59.8    61   326 3.89 3.84 2.31
3  0.23      Good     E     VS1  56.9    65   327 4.05 4.07 2.31
4  0.29   Premium     I     VS2  62.4    58   334 4.20 4.23 2.63
5  0.31      Good     J     SI2  63.3    58   335 4.34 4.35 2.75
6  0.24 Very Good     J    VVS2  62.8    57   336 3.94 3.96 2.48

> head(diamonds)[grep("E", head(diamonds)$color),]
  carat     cut color clarity depth table price    x    y    z
1  0.23   Ideal     E     SI2  61.5    55   326 3.95 3.98 2.43
2  0.21 Premium     E     SI1  59.8    61   326 3.89 3.84 2.31
3  0.23    Good     E     VS1  56.9    65   327 4.05 4.07 2.31

> subset(head(diamonds)[grep("E", head(diamonds)$color),])
  carat     cut color clarity depth table price    x    y    z
1  0.23   Ideal     E     SI2  61.5    55   326 3.95 3.98 2.43
2  0.21 Premium     E     SI1  59.8    61   326 3.89 3.84 2.31
3  0.23    Good     E     VS1  56.9    65   327 4.05 4.07 2.31