想要从R中的向量中删除某个值

时间:2018-06-04 14:21:30

标签: r regex gsub

我有以下形式的矢量:

A< -

[1] "[1]"                "\"0\""              "\"0\""              "\"0\""              "\"0\""              "[5]"                "\"0\""              "\"0\""              "\"0\""              "\"0\""             
[11] "[9]"                "\"0\""              "\"0\""              "\"0\""              "\"0\""              "[13]"               "\"0\""              "\"0\""              "\"0\""              "\"0\"" 

我想删除所有数字“[1]”,“[5]”,“[11]”,“[15]”......“[1500]”等等在R中使用gsub或regex我在下面试了一下:

remove<- gsub("[0:9]", a)

但是得到以下错误:

Error in gsub("[0:9]", a) : argument "x" is missing, with no default

提前致谢!

1 个答案:

答案 0 :(得分:0)

请注意,gsub仅删除字符向量项中的文本,但不会删除项本身。在这种情况下,您需要一个类似grep的解决方案。

您可以使用简单的模式来识别这些项目:

^\[\d+]$

请参阅regex demo

<强>详情

  • ^ - 字符串开头
  • \[ - [字符
  • \d+ - 1+位数
  • ] - 文字]
  • $ - 字符串结束。

然后,grep命令invert=TRUE选项一起使用,仅保留与此正则表达式不匹配的项目,并value=TRUE获取值而不是指数。

请参阅R demo

> a <- c("[1]", "\"0\"")
> grep("^\\[\\d+]$", a, invert=TRUE, value=TRUE)
[1] "\"0\""