Мы можем получить совокупную сумму логического вектора для создания индекса группировки для 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
Обратите внимание, что при накопленной сумме добавляется 1 при каждом значении TRUE Затем мы делаем подмножество вектора, чтобы не включать ""
. Отрицая (!
), ИСТИНА становится ЛОЖНОЙ и ЛОЖЬ -> ИСТИНА.
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"