gsub() в R не заменяет '.' (Точка)

Я новичок в R и хотел заменить точки в "2014.06.09" на "2014-06-09". Я использую для этого функцию gsub(). Если

> x="2014.06.09"
> gsub('2','-',x)
[1] "-014.06.09"

Но когда я пытаюсь

> gsub('.','-',x)
[1] "----------"

вместо "2014-06-09".

PS- класс (x) является символом

Могут ли кто-то предложить мне способ получить это право, а также почему он не работает для ". (Точка)

Ответ 1

Возможно, вам придется сбежать . который является специальным символом, который означает "любой символ" (из комментария @Mr Flick)

 gsub('\\.', '-', x)
 #[1] "2014-06-09"

Или

gsub('[.]', '-', x)
#[1] "2014-06-09"

Или как @Moix, упомянутый в комментариях, мы также можем использовать fixed=TRUE вместо экранирования символов.

 gsub(".", "-", x, fixed = TRUE)