Включение / сохранение пространства в Gsub с помощью R - PullRequest
0 голосов
/ 09 марта 2020

Это, вероятно, базовый c вопрос, и, возможно, на него ответили, но пока не может найти ни одного прямого сообщения:

Цель: заменить указанные c слова в текстовом / символьном векторе на " "или с" 1: n ", в идеале с использованием gsub, также открыты для других идей.

Подробности: я запустил al oop для gsub, который сделал трюк, НО он заменял каждое «i», когда я хочу только «i» (с пробелом до и после замены, сохраняя все остальные я в словах. Так что и для «до» - должен заменить только полное слово => «я пошел в город инди go» должен стать «пошел город инди go», текущий код (в принципе) делает его «пошел сам» nd go "Любой вклад был бы оценен, спасибо!

Вот l oop Я написал в R (опять же, вероятно, устаревший / неэффективный):

a1 <- NULL
for(j in 1:length(xt1)) {
  for (i in 1:length(st1)) {

    xt1[j] = gsub(st1[i], " ", xt1[j])

  } 
  a1[j] = gsub(st1[i], " ", xt1[j])
}
head(a1)

st1

st1 [1] «u», «e», «to», «a», и «you», «for», «i»

xt1

xt1 [1] «Приятно видеть, что София Кенин получает титул № 5 в Лионе, особенно так скоро после ее триумфа #AusOpen. Всегда появляется на гастролях и сражается изо всех сил, через четыре последовательных три сеттера, чтобы получить звание. "
[2]" @KeepUKtogether @waltersboy_ Позитивные направления для тех, кто покидает школу, становятся все более хорошими. Многие go в отличные ученичества, такие как те, которые я встретил в пятницу. Умеет учиться и зарабатывать деньги одновременно. Победа победа. "
[3]" @kamaalrkhan @iTIGERSHROFF Тигр заработал столько славы, чтобы сделать фильм хитом *
[4] "@ComforblySmug Женщины зарабатывают только 23 часа против 24 человек. Нам нужно закончить Часовой перерыв в этой стране. "
[5]" @ByMikeBaker @GlenBikes Я думаю, @MayorJenny хочет решить более серьезный кризис, поэтому она хорошо выглядит на выборах! Или, может быть, их слишком много доноров, считающих деньги, которые они заработают или потеряют, основываясь на решении! "
[6]" Вороны сбрасывают Мустанги, зарабатывают еще один национальный финал "*
[7]" @JaredRBLX Да, это это моя проблема ... в моей новой сборке только одна моя лестница была более 10000, это занимает столько времени, чтобы зарабатывать. Тогда я теряю мотивацию или идеи о том, что я делаю ... Так что теперь экономлю, прежде чем строить "[8]" Все, что я делаю, это мечтаю о жизни без забот и мечтаю о том, чтобы иметь возможность зарабатывать деньги, чтобы записать мои стратегии по обогащению. Мое желание похоже на царапину, которая должна чесаться ... "

a1

head (a1) [1]" N c s SK nngtt tl No.5 n Lyon, sp c lly так скоро ft rhr #A sOp n tr mph. Всегда показывает, что происходит, а что нет, 1047 * tv-s tt rs, rt th tl. "
[2]" @K pUK g th r @w lt rsboy_ Позволяет получить хорошее образование. Множество go nx c ll nt ppr nt c sh ps s ch s th s th s, которые я ставлю на Fr d y. Прошлое года. W nw n. "[3]" @km lrkh n @ TIGERSHROFF T grhs rn thm ch st rdom mkf lm ht "
[4]" @ComTBlySmgWomnn rn 23 года 24ч. W nd nd å ë r g co co "" "" "* * * * * * @ @ @ @ @ @ @ @ @ @ @ @ @ @ so so so so so so so so so so so so so so so so so so so so so so so so so so so so so 10 so 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 so 10 10 so so so so so so so so дополнения! Или, может быть, только несколько доноров объединят деньги или проиграют на c с! "
[6]" R v ns d mp M st ngs, рн нот рнт на лфнл пп рн c "

Ответы [ 2 ]

1 голос
/ 09 марта 2020

После ответа от Грегора вам не нужно все oop делать замены. Вы можете использовать gsub или string_replace из пакета stringr :

library(stringr)

st1 = c("u", "e", "to", "the", "a", "and", "you", "for", "of", "i")

st1b = paste0("\\b", st1, "\\b", collapse = "|") ## adding extra \ for R

xt1 <- c("Nice to see Sofia Kenin get title No.5 in Lyon, especially so soon after her #AusOpen triumph. Always shows up for the tour events and battled hard, through four consecutive three-setters, to earn the title.",
         "@KeepUKtogether @waltersboy_ Positive destinations for those leaving school are increasingly good. Many go into excellent apprenticeships such as those I met on Friday. Able to study and earn money at the same time. Win win.",
         "@kamaalrkhan @iTIGERSHROFF Tiger has earn that much stardom to make film hit",
         "@ComfortablySmug Women only earn 23 hours to a man's 24. We need to end the hour gap in this country.",
         "@ByMikeBaker @GlenBikes I think @MayorJenny wants to solve a bigger crisis so she looks good for elections! Or maybe theirs just too many donors counting the money they'll earn or lose based on the decision!",
         "Ravens dump Mustangs, earn another national final appearance",
         "@JaredRBLX Yeah this is my problem.. in my new build my staircase alone was over 10,000 it takes so long to earn Then I lose motivation or ideas on what I'm doing.. So now saving before anymore building ",
         "All i do is yearn a life without a concern, and dream of having a turn to earn money to burn mapping out my strategies to get rich. My desire is like a scratch that needs to get itched...")

a1 <- str_replace_all(xt1, st1b, "")

a1 <- gsub(st1b, "", xt1)
0 голосов
/ 09 марта 2020

В регулярном выражении \b - это «граница слова», в основном переход от букв к не буквам (это может быть пробел, новая строка, пунктуация в конце предложения и т. Д. c.). Итак, вам нужно поставить границы слов по обе стороны от ваших шаблонов.

Мы также можем сделать лучше, чем for l oop --- разделив каждый из ваших шаблонов с | для ИЛИ, вы можете сделать все замены одновременно.

st1 = c("u", "e", "to", "the", "a", "and", "you", "for", "of", "i")

st1b = paste0("\\b", st1, "\\b", collapse = "|") ## adding extra \ for R

gsub(st1b, "", "i went to town indigo")
# [1] " went  town indigo"

Это оставило лишние пробелы, которые вы можете убрать другим gsub(" +", "", x)

...