1) gsubfn Используя gsubfn
в пакете gsubfn, приведем однострочник, в котором используются только простые регулярные выражения.Он вводит группу захвата в указанную функцию (выраженную в формуле) и заменяет совпадение на выход функции.
library(gsubfn)
gsubfn("; (.*)", ~ paste(";", gsub(" ", "", x)), test)
## [1] "ab cd ; efghij"
2) gsub При этом используется шаблон, состоящий изпробел, которому сразу не предшествует точка с запятой, и нигде в оставшейся части строки не следует точка с запятой.
gsub("(?<!;) (?!.*; )", "", test, perl = TRUE)
## [1] "ab cd ; efghij"
3) regexpr / substring Он находит позицию точки с запятой и затем использует substring
, чтобы разбить его на две части и заменить пробелы на gsub
, наконец, вставив его обратновместе.
ix <- regexpr(";", test)
paste(substring(test, 1, ix), gsub(" ", "", substring(test, ix + 2)))
## [1] "ab cd ; efghij"
4) read.table Это похоже на (3), но использует read.table
для разделения ввода на два поля.
with(read.table(text = test, sep = ";", as.is = TRUE), paste0(V1, "; ", gsub(" ", "", V2)))
## [1] "ab cd ; efghij"