我有一个名为product的数据框,带有可变电子邮件。
我想过滤这些值并将它们存储到另一个数据框中。不幸的是,我的下面的代码给了我一个错误"子集必须是逻辑的" ?
newdataframe<-subset(product,regexpr("/^([0-9]*)_",email))
在这里,我检查所有以numbersequence开头的电子邮件地址,然后用下划线
答案 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