




Мы можем получить кумулятивную сумму логического вектора, чтобы создать индекс группировки для split
i1 <- v1 == ""
i1
#[1] FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE
grp <- cumsum(i1)
grp
#[1] 0 0 0 1 1 1 2 2
Обратите внимание, что при кумулятивной сумме к каждому значению TRUE добавляется 1. Затем мы делаем подмножество вектора, чтобы не включать "". Отрицая (!), ИСТИНА становится ЛОЖЬЮ и ЛОЖЬ -> ИСТИНА.
v1[!i1]
#[1] "kuku" "pupu" "lilu" "ff" "rrrr" "rrr"
Точно так же «grp» также подмножается, поскольку мы хотим, чтобы оба вектора имели одинаковую длину и выполняли split
split(v1[!i1], grp[!i1])
#$`0`
#[1] "kuku" "pupu" "lilu"
#$`1`
#[1] "ff" "rrrr"
#$`2`
#[1] "rrr"
@СтивС спасибо. Я добавил некоторые пояснения. Надеюсь, поможет
Уважаемый akrun, как всегда блестящий ответ. Пожалуйста, будьте так добры и объясните немного.