The function unite() in the tidyr package does exactly this.
https://tidyr.tidyverse.org/reference/unite.html
>tidyr::unite(data, col='newcolumn', sep='-', remove=TRUE)
newcolumn
1 1-a-d-g
2 2-b-e-h
3 3-c-f-i
>
If you have columns that you want to leave untouched, then you just need to add an array of the column names after the 'col' argument
>tidyr::unite(data, col='newcolumn', remove_these_cols, sep='-', remove=TRUE)