Заменить точное предложение из абзаца в R - PullRequest
1 голос
/ 01 февраля 2020

Я пытаюсь сопоставить предложение из абзаца и заменить его.

Ниже приведен кадр данных -

fulltext = c(rep("<span style=\"font-family:Calibri\"><span style=\"font-size:18px\">__ - Now</span>\r\n\r\n<strong><span style=\"font-size:24px\">X - Soon</span></strong>\r\n\r\n<span style=\"font-size:18px\">__ - N</span></span><span style=\"font-family:Calibri\"><span style=\"font-size:18px\">ext Scheduled Maintenance or Inspection</span></span>",3),
  "<span style=\"font-size:20px\"><strong><span style=\"font-family:&quot;Calibri&quot;,sans-serif\">What is Triggering this Expert Alert?</span></strong></span>")

cleantext = c("__ - Now", "X - Soon", "ext Scheduled Maintenance or Inspection", "What is Triggering this Expert Alert?")

replacetext = c("__ - Nu", "X - Binnenkort", "ext Gepland onderhoud of inspectie", "Wat veroorzaakt deze expertwaarschuwing?")
data5 = data.frame(fulltext, cleantext, replacetext)

Это то, что я пытаюсь сделать -

  1. Взять предложение из чистого текста
  2. Соответствие с полным текстом
  3. заменить чистый текст заменой текста в полном тексте

Например. Что вызывает это тревожное предупреждение?

Выше полный абзац, я хочу заменить предложение жирным шрифтом на Wat veroorzaakt deze expertwaarschuwing?

Вывод Должен выглядеть - Wat veroorzaakt deze expertwaarschuwing?

Это то, что я пробовал до сих пор. Теперь я попробовал несколько способов сделать это.

  1. с помощью замены строки
  2. попытался добавить ^ и $ в начало и конец предложения, а затем использовать gsub, чтобы сопоставить их с шаблоном регулярных выражений. Но я думаю, что это работает только со словами. Ниже моя попытка, но она не сработала.

data5$cleantext2 = paste0("^",data5$cleantext,"$") gsub(data1$Cleantext2[1], data1$replacetext[1], data1$fulltext[1])

1 Ответ

0 голосов
/ 01 февраля 2020

Нет л oop необходимо. Кроме того, ваши ^ и $ не будут работать, поскольку ваши шаблоны замены находятся в середине строки. Вы можете уменьшить несоответствия с помощью фиксированных шаблонов.

Поскольку вы хотите применить все шаблоны / замены к каждому из fulltext (а не только 1-к-1), то я думаю, что вы можете Reduce ит.

Reduce(function(s, ptn) gsub(ptn[1], ptn[2], s, fixed = TRUE), 
       Map(c, cleantext, replacetext),
       init = fulltext)
# [1] "<span style=\"font-family:Calibri\"><span style=\"font-size:18px\">__ - Nu</span>\r\n\r\n<strong><span style=\"font-size:24px\">X - Binnenkort</span></strong>\r\n\r\n<span style=\"font-size:18px\">__ - N</span></span><span style=\"font-family:Calibri\"><span style=\"font-size:18px\">ext Gepland onderhoud of inspectie</span></span>"
# [2] "<span style=\"font-family:Calibri\"><span style=\"font-size:18px\">__ - Nu</span>\r\n\r\n<strong><span style=\"font-size:24px\">X - Binnenkort</span></strong>\r\n\r\n<span style=\"font-size:18px\">__ - N</span></span><span style=\"font-family:Calibri\"><span style=\"font-size:18px\">ext Gepland onderhoud of inspectie</span></span>"
# [3] "<span style=\"font-family:Calibri\"><span style=\"font-size:18px\">__ - Nu</span>\r\n\r\n<strong><span style=\"font-size:24px\">X - Binnenkort</span></strong>\r\n\r\n<span style=\"font-size:18px\">__ - N</span></span><span style=\"font-family:Calibri\"><span style=\"font-size:18px\">ext Gepland onderhoud of inspectie</span></span>"
# [4] "<span style=\"font-size:20px\"><strong><span style=\"font-family:&quot;Calibri&quot;,sans-serif\">Wat veroorzaakt deze expertwaarschuwing?</span></strong></span>"                                                                                                                                                                           
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...