Используйте регулярные выражения , чтобы учесть границы слов \\b
.
Чтобы избежать многократного gsub()
, мы могли бы использовать матрицу замены rmx
.
rmx <- matrix(c("\\sis taken on\\s\\b", " ",
"\\b\\sat\\s", "\t" # replace with tab
), 2)
# [ ,1] [,2]
# [1,] "\\sis taken on\\s\\b" "\\b\\sat\\s"
# [2,] " " "\t"
Теперь мы можем кормить gsub()
столбцом rmx
столбец, используя apply()
. Для внесения постоянных изменений в tx
мы можем использовать оператор <<-
. Чтобы избежать спама в консоли, мы могли бы обернуть все это с помощью invisible()
.
tx <- readLines("My_text.txt")
invisible(
apply(rmx, MARGIN=2, function(x) tx <<- gsub(x[1], x[2], tx))
)
Чтобы получить непрерывный текст, а не абзацы (что, я полагаю, вы подразумеваете под ^p
-заменой), мы могли бы простоpaste()
результат, collapse
ing ,
. Пустые строки должны быть отфильтрованы с помощью tx != ""
.
tx <- paste(tx[tx != ""], collapse=", ")
Сейчас writeLines()
.
writeLines(tx, con="tx4.txt")
Результат
-Данные 1 августа 2009 г. UBC и значимы при значении р <0,01; -Данные 2 сентября 2012 г. СФЕ и не значимы при значении р> 0,06
Приложение
Мы также можем заменить специальные символы в R двойным экранированием - прочитайте этот пост .
gsub("\\$", "\t", "today$is$monday")
# [1] "today\tis\tmonday"