Карта через вложенный список с использованием регулярных выражений для удаления записей вектора символов - PullRequest
0 голосов
/ 11 января 2020

У меня есть вложенный список (https://www.filehosting.org/file/details/841630/bribe.RData), который я хочу преобразовать в тиббл. В списке есть несколько векторов символов, длина которых отличается от других векторов. Это связано с проблемой веб-копирования, которая не могла быть исправлена ​​ранее в другом вопросе.

Поскольку все дополнительные строки символов в этих векторах имеют определенный шаблон c, я написал регулярное выражение для их поиска и удаления. Эти дополнительные строки появляются только в 5-м символьном векторе каждого подсписка. Как я могу отобразить все эти подсписки и векторы, чтобы избавиться от лишних строк сразу.

Версия отображения должна извлекать следующее из каждого 5-го символьного вектора каждого подсписка: MMW:

bribe.test <-stringr:::str_remove( bribe.info[[1]][[5]],
 "(\\\r\\\n\\s*){3}.+(\\\r\\\n\\s*){2}")

Как я могу это сделать? transpose() в сочетании с simplfy_all() вариант? Если да, то как именно использовать это здесь, в этом случае?

Конечный тиббл должен иметь такую ​​структуру, чтобы все символьный вектор x каждого подсписка создавал один столбец в data.frame.

ОБНОВЛЕНИЕ: Чтобы сделать вещи немного более доступными, я включу вывод списка bribe.info [[1]] [[5]]

[1] " \ r \ n Здравствуйте, сэр, мой дядя только вчера приехал в Индию> ночью в аэропорт Ахмадабада из Новой Зеландии. И я дал ему 2 iphone, iphone 8> плюс и iphone 11 про ... Читать далее \ n "
[2]" \ r \ n Дата происшествия: 29 декабря 2019 г. \ nВремя> происшествия: Около 8 вечера. \ n Место происшествия: дорога ECR, Пондишери> до Тамилнада, проверка поз. ..Подробнее \ r \ n "[3]" \ r \ n Уважаемый сэр, \ n \ nЭто уже не первый раз, когда я> сталкиваюсь с этой проблемой с Агентством Газового Рохита. Я пытался довести ее до сведения> Индан. Его бесполезно. Рохит ... Подробнее \ r \ n "[4]" \ r \ n \ r \ n \ r \ n> Как получить газовое соединение для сжиженного нефтяного газа \ r \ n \ r \ n "
[5]" \ r \ n Сегодня я заплатил взятку сотруднику полиции, который пришел> для проверки паспорта моей матери. Даже после предоставления всех подтверждающих> документов и требуемой информации ... Читать далее \ r \ n "
[6] "\ r \ n Я попросил дать взятку, чтобы избежать Угроза штрафа> за наложение палаточного листа на машину windows. Полиция попросила меня заплатить 1100 штрафа или> заплатить взятку вместо того, чтобы ... Читать далее \ r \ n "
[7]" \ r \ n Сотрудник службы поддержки prashant, которые заманивают людей в ловушку для выполнения работы давать взятки высокопоставленным чиновникам в малакпете rto malakpet> Хайдарабад ... Читать далее \ r \ n "
[8]" \ r \ n Получите бесплатную доставку при покупке сигаретного автомата Revolution the Great American Electri c в пределах континентальной части США с> https://hardworkingproduct...Read далее \ r \ n "
[9]" \ r \ n Я хотел бы сообщить вам, что в D C Офис городского отдела Бангалора. Мне не платят> взятка напрямую, есть намного больше ... Подробнее \ r \ n "
[10]" \ r \ n Вы заинтересованы в продаже одного из ваших k1dney? > за хорошую сумму 14Crore 7 cr Advance любезно Свяжитесь с нами сейчас 9663960578>. \ n ... Подробнее \ r \ n "
[11]" \ r \ n Вы заинтересованы в продаже одного из ваших k1dney> за хорошее количество 14Crore 7 cr Advance любезно Свяжитесь с нами сейчас, так как мы> ищем донора k1dney, ... Подробнее \ r \ n

Регулярные выражения должны фильтровать вектор 4 списка. Который работает отлично. Но я понятия не имею, как я могу сделать это для bribe.info [[2]] [[5]], bribe.info [[3]] [[5]] ... и так далее с картой.

1 Ответ

0 голосов
/ 11 января 2020

Я нашел способ сделать это с помощью базы R. Так что, в принципе, я надеюсь, что любой сможет предложить простое решение с помощью purrr.

### remove text of embedded links transform the list into a tibble
briber <- list()
for(i in 1:130){
  for(j in 1:5 )
bribe.info[[i]][[j]] <- subset(bribe.info[[i]][[j]],!grepl("(\\\r\\\n\\s*){3}.+(\\\r\\\n\\s*){2}", bribe.info[[i]][[j]] ))
}
bribe.tibble <- bribe.info %>% map(~ as_tibble(.x, .name_repair = "unique")) %>% bind_rows()
...