Удалить указанную c строку или пустой элемент из вектора символов - PullRequest
0 голосов
/ 13 апреля 2020

Я записываю https://www.transparency.org/news/pressreleases/year/2010, чтобы получить заголовок и детали с каждой страницы. Но наряду с заголовком и подробностями в извлеченном списке для каждой страницы появляется номер телефона и пустая строка.

[1] "Посмотрите наши простые, анимированные определения типов коррупции и способы борьбы с ней. "
[2]" Судебная система - комментируя вынесение приговора судьей Бин по делу Танзании BAE Systems, британская организация Transparency International приветствовала строгие замечания судьи относительно прошлого поведения BAE Systems. "
[3]" "
[4] "+49 30 3438 20 666"

Я пробовал следующие коды, но они не работали.

html%>% str_remove ('+ 49 30 3438 20 666')%>% str_remove ('').

Как можно удалить эти элементы?

Ответы [ 2 ]

2 голосов
/ 13 апреля 2020

Это потому, что вам не удалось избежать знака +?

Из этого листа ,

Метасимволы (. * + Et c .) можно использовать как буквальные символы, избегая их. Символы можно экранировать, используя \ или заключив их в \ Q ... \ E.

s = "+49 30 3438 20 666"
str_remove(s, "\\+49 30 3438 20 666")
# ""
1 голос
/ 13 апреля 2020

Если вы хотите удалить все строки, которые начинаются с + и заканчиваются цифрой:

dd <- c(
 "See our simple, animated definitions of types of corruption and the ways to challenge it."
, "Judiciary - Commenting on Justice Bean’s sentencing in the BAE Systems’ Tanzania case, Transparency International UK welcomed the Judge’s stringent remarks concerning BAE Systems’ past conduct."
," "
, "+49 30 3438 20 666")

c <- dd[!grepl("^\\+.*\\d*$",dd)]

Вы также можете использовать \\s (один пустой пробел) и \\d{2} (2 числа ) иметь точное совпадение, чтобы быть в безопасности, если все числа имеют одинаковый формат. Обратите внимание, что вы также можете использовать его в str_remove с конечным результатом beig пустой строкой grep вместо этого возвращает в качестве логического вектора, который подмножество вашей строки.

Если вы хотите удалить также все пустые строки

dd[!grepl("^\\s*$",dd)]

Обратите внимание, что вы можете сделать обе одновременно, используя "|" :

dd[!grepl("^\\+.*\\d*$|^\\s*$",dd)]

Ознакомиться с регулярным выражением можно здесь: https://regex101.com/

...