«Любой из метасимволов
!"#$%&'()*+,./:;<=>?@[\]^`{|}~
как буквальная часть имени, он должен быть экранирован с двумя обратными косыми чертами: \\
.
Например , элемент с id = "foo.bar", может использовать селектор
$("#foo\\.bar")
"[источник: jquery doc ], а элемент с id =" foo [ bar] "(даже если он недействителен для W3C, но распознан JQuery), можно использовать селектор
$("#foo\\[bar\\]")
(Только один asnwer, как и многие другие, но все вместе:))
R-функция для замены строк - gsub("Pattern_to_find", "replacement", string_vector_to_work_on)
. Приветствия
Есть несколько способов сделать это. Использование 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 = "")
Как было сказано в комментариях: незнание вашей структуры данных затрудняет вашу помощь. В приведенном ниже примере я создал несколько примеров данных на первом этапе.
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]+\\. -"))