给定一个向量:
c("kuku", "pupu", "lilu","","ff","rrrr", "", "rrr")
如何用""
分割?
得到3个向量:
c("kuku", "pupu", "lilu")
c("ff","rrrr")
c("rrr")
最佳答案
我们可以得到逻辑向量的累加和来创建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。然后,我们做向量的一个子集以不包含 ""
。通过取反 (!
),TRUE 变为 FALSE,FALSE -> TRUE。
v1[!i1]
#[1] "kuku" "pupu" "lilu" "ff" "rrrr" "rrr"
同样,'grp' 也被子集化,因为我们希望两个向量具有相同的长度并进行拆分
split(v1[!i1], grp[!i1])
#$`0`
#[1] "kuku" "pupu" "lilu"
#$`1`
#[1] "ff" "rrrr"
#$`2`
#[1] "rrr"
关于r - 按 R 中的元素拆分字符向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55783186/