В соответствии с вашим решением, если вы просто замените
paste(dates[i, 1], dates[i,2], dates[i,3], dates[i,4])
на
paste(dates[i, 1], dates[i,2], paste(dates[i,3], dates[i,4], sep = "-"))
, который должен уже работать.Это просто вкладывает разделяющую пасту "-" в разделяющую пасту "" (по умолчанию паста равна "").
Более элегантный однострочник будет использовать apply:
apply(dates, 1, function(row)paste(row[1], row[2], paste(row[3], row[4], sep = "-")))
[1] "2000 06 01-10" "2000 06 11-20" "2000 06 21-30"