хотите удалить определенное значение из вектора в R - PullRequest
0 голосов
/ 04 июня 2018

У меня есть вектор в форме ниже:

a <- </p>

[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] ", поэтому, используя gsub или regex в R. Я дал следующую попытку:

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

Но получаю следующую ошибку:

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

Заранее спасибо!

1 Ответ

0 голосов
/ 04 июня 2018

Обратите внимание, что gsub удаляет только текст внутри символьных векторных элементов, но не удаляет сами элементы.В этом случае вам понадобится решение, подобное grep.

Вы можете использовать простой шаблон для идентификации этих элементов:

^\[\d+]$

См. Демонстрационную версию regex .

Подробности

  • ^ - начало строки
  • \[ - [ char
  • \d+ - 1+ цифр
  • ] - литерал ]
  • $ - конец строки.

Тогда используйте его с grep командой с опцией invert=TRUE, чтобы сохранить только элементы, не соответствующие этому регулярному выражению, и value=TRUE, чтобы получить значения, а не индексы.

См. R демо :

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