R: Как заменить. в строке?

У меня строка говорит "ab", и я хочу заменить ".". с "_".

gsub(".","_","a.b")

не работает. соответствует всем символам.

gsub("\.","_","a.b")

Просто дает мне ошибку.

Чтение документации на? Gsub не так уж полезно!

Итак, как это сделать прямолинейно?

Ответы

Ответ 1

. соответствует любому символу. Побег . используя \ to match . буквально.

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

> gsub("\\.", "_", "a.b")
[1] "a_b"

Ответ 2

Вам нужно удвоить escape \\, ускользая . чтобы соответствовать буквальной точке и экранировать \. Имейте в виду, что с помощью sub заменяет первое вхождение шаблона, gsub заменяет все вхождения.

string <- "a.b"
sub('\\.', '_', string)
[1] "a_b"

string <- "a.b.c.d.e.f"
gsub('\\.', '_', string)
[1] "a_b_c_d_e_f"

Вы также можете использовать sub или gsub с параметром fixed = TRUE. Это берет строку, представляющую шаблон, который вы ищете, поскольку он игнорирует специальные символы.

string <- "a.b"
sub('.', '_', string, fixed = TRUE)
[1] "a_b"

Ответ 3

попробуйте вот так:

gsub("[.]","_","a.b")

Ответ 4

Попробуйте синтаксис regex [[: punct:]], например ".". сам по себе является символом пунктуации, присутствующим в строке.

gsub("[[:punct:]]","_","a.b")

Выход: [1] "a_b"