Извините, @Сотос прав, это не дубликат. Вот еще одно базовое решение, которое разделяется при первом появлении разделителя.
df <- data.frame(text = c("separate1: and: more","another 20: 42"))
list <- apply(df, 1, function(x) regmatches(x, regexpr(":", x), invert = TRUE))
df <- data.frame(matrix(unlist(list), nrow = length(list), byrow = TRUE))
df
#> X1 X2
#> 1 separate1 and: more
#> 2 another 20 42
Создано в 2020-02-10 пакетом Представления (v0.2.1)