Split character vector by element in R?

Ste*_*veS 3 string split r vector

Given a vector:

c("kuku", "pupu", "lilu","","ff","rrrr", "", "rrr")
Run Code Online (Sandbox Code Playgroud)

How can I split it by ""?

To get 3 vectors:

c("kuku", "pupu", "lilu")
c("ff","rrrr")
c("rrr")
Run Code Online (Sandbox Code Playgroud)

akr*_*run 7

我们可以获取逻辑向量的累加总和,以创建用于 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
Run Code Online (Sandbox Code Playgroud)

请注意,对于累计和,它在每个TRUE值处加1。然后,我们对向量做一个子集,不包含""。取反(!),则TRUE beomes为FALSE和FALSE-> TRUE。

v1[!i1]
#[1] "kuku" "pupu" "lilu" "ff"   "rrrr" "rrr" 
Run Code Online (Sandbox Code Playgroud)

同样,“ grp”也是子集,因为我们希望两个向量都具有相同的长度并执行 split

split(v1[!i1], grp[!i1])
#$`0`
#[1] "kuku" "pupu" "lilu"

#$`1`
#[1] "ff"   "rrrr"

#$`2`
#[1] "rrr"
Run Code Online (Sandbox Code Playgroud)