【发布时间】:2019-09-10 23:37:36
【问题描述】:
给定一个向量:
c("kuku", "pupu", "lilu","","ff","rrrr", "", "rrr")
我怎样才能用""分割它?
要获得 3 个向量:
c("kuku", "pupu", "lilu")
c("ff","rrrr")
c("rrr")
【问题讨论】:
给定一个向量:
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
split(v1[!i1], grp[!i1])
#$`0`
#[1] "kuku" "pupu" "lilu"
#$`1`
#[1] "ff" "rrrr"
#$`2`
#[1] "rrr"
【讨论】: