Как насчет следующего (я считаю, что OP не нужно выполнять какие-либо проверки значения его переменной здесь).
val="201805"
sub("(..$)","-\\1",val)
ИЛИ, чтобы выполнить замену только с двумя последними цифрами, попробуйте выполнить следующее.
val="201805"
sub("(\\d{2}$)","-\\1",val)
[1] "2018-05"