Мне нужно использовать функцию gsub в 1000 строках столбца, содержащего текст. В каждой строке я хочу удалить каждое слово, встречающееся между «сказал:» и «нажмите, чтобы развернуть ...», так как они являются просто копией предыдущего твита. Я пытаюсь использовать gsub
для выполнения своей задачи
content2<-as.data.frame(gsub(".*said:(.*?)expand.... *", " ", content2$txt,fixed=TRUE),stringsAsFactors = FALSE);
Но он удаляет только «сказал:» и расширяется. content2
- это 100 наблюдений за одним фреймом переменных данных, и я должен выполнить задачу для каждой строки. после ответа Виктора я попытался увидеть, работает ли написанная им строка или нет. я до сих пор вижу сказанное: и нажмите, чтобы развернуть .... в строке 35, поэтому код от wiktor работает только для первой строки, я думаю (которая в любом случае не содержит строк, которые нужно удалить). Я попытался использовать apply безуспешно, чтобы применить это к каждой строке следующим образом, b3, кроме того, что он слишком медленный, он дает мне другую ошибку:
ops<-apply(content2,1,gsub("(said:).*?(click to expand\\.{3})", "\\1 \\2", content2,fixed=TRUE))
Только что просмотрел повторяющийся пост, он не отвечает на мой вопрос, что: Что мне делать, если я хочу заменить все символы в шаблоне, скажем, я хочу заменить все строки между "said:" и "click to expand" для всех строк фрейма данных 100X1. все строки содержат набор строк, и выходные данные должны быть в формате данных размеров 100X1: ops<-gsub("(said:).*?(click to expand\\.{3})", "\\1 \\2", test)
@ WiktorStribiżew спасибо, похоже, это работает только проблема, я также хочу удалить "сказал:" & "нажмите, чтобы развернуть ..." Я сделал следующий воспроизводимый код, который вы можете увидеть: «сказал:» и «нажмите, чтобы развернуть ...» не удаляются.
test<-as.data.frame(c("he said: i wanna be a rockstar click to expand....ok great but how you gonna do it",
"rockstar said: so how you gonna do it click to expand.... we are wanna be a big rockstar, hang out in collest bar vip with movie star"),stringsAsFactors=FALSE)
ops<-lapply(test, gsub, pattern = '(said:).*?(click to expand\\.{3})', replacement ="\\1 \\2", perl=TRUE)
ops<-as.data.frame(ops,stringsAsFactors = FALSE)