Удалить конкретные слова с определенной пунктуацией в R

«Любой из метасимволов

!"#$%&'()*+,./:;<=>?@[\]^`{|}~

как буквальная часть имени, он должен быть экранирован с двумя обратными косыми чертами: \\.

Например , элемент с id = "foo.bar", может использовать селектор

$("#foo\\.bar")

"[источник: jquery doc ], а элемент с id =" foo [ bar] "(даже если он недействителен для W3C, но распознан JQuery), можно использовать селектор

$("#foo\\[bar\\]")

(Только один asnwer, как и многие другие, но все вместе:))

2
задан Léo Henry 20 March 2019 в 16:06
поделиться

3 ответа

R-функция для замены строк - gsub("Pattern_to_find", "replacement", string_vector_to_work_on). Приветствия

0
ответ дан Frank 20 March 2019 в 16:06
поделиться

Есть несколько способов сделать это. Использование sub заменит только первое совпадение тем, что вы укажете. gsub заменит каждый экземпляр. Вы также можете проверить пакет stringi, который имеет несколько функций для такого рода задач. Приведенный ниже пример сопоставляет все перед первым тире (с пробелом после него) и заменяет его на «». Если вы хотите быть более консервативным, вы можете удалить пробел после и использовать trimws, если после первой черты есть непоследовательный интервал.

sub((".* \\- "), "", c("President. - Are you Nikolaj Khvostov?", "Khvostov. - Yes Mr. President."))
[1] "Are you Nikolaj Khvostov?" "Yes Mr. President."   

РЕДАКТИРОВАТЬ:

Без лучшего понимания ваших данных мы просто догадываемся, поэтому очень полезно иметь пример данных в R. Однако теоретически эти решения могут работать в зависимости от вашей структуры данных.

Если это список, это должно сработать:

text_as_list <- list("President. — Are you Nikolaj Khvostov?", "Khvostov. — Yes Mr. President.")

lapply(text_as_list, sub, pattern = "^.* \\— ", replacement = "")
[[1]]
[1] "Are you Nikolaj Khvostov?"

[[2]]
[1] "Yes Mr. President."

И если это один длинный вектор, это должно сработать (сейчас используется gsub):

long_vector <- c("President. — Are you Nikolaj Khvostov?\nKhvostov. — Yes Mr. President.")

cat(long_vector)
President. — Are you Nikolaj Khvostov?
Khvostov. — Yes Mr. President.

long_vector_fixed <- gsub(("Khvostov. \\— "), "", gsub(("President. \\— "), "", long_vector))

cat(long_vector_fixed)

Are you Nikolaj Khvostov?
Yes Mr. President.

Возможное решение с использованием функции tm_map, которую вы использовали:

tm_map(corpus2, sub, pattern = "^.* \\— ", replacement = "")
0
ответ дан Andrew 20 March 2019 в 16:06
поделиться

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

library(tidyverse)    

#Create some sample data
data <- tibble(
  text = c("President. - Are you Nikolaj Khvostov?",
           "Khvostov. - Yes Mr. President."))

#A print of the sample data
data

#Create a variable called "new_text" using the mutate() function
#The function str_remove() from the stringr package is used to remove the unwnted elements

data %>% 
  mutate(
    new_text = str_remove(text, pattern = "^[a-zA-Z]+\\. -"))
0
ответ дан Steen Harsted 20 March 2019 в 16:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: