如何将向量拆分为特定值的列表

Ani*_*yal 9 r list readfile

''当遇到空值时,如何将以下向量拆分为包含每个新元素的列表?

例如给定以下输入 -

x <- c("abc", "", "a", "b", "c", "", "ab", "ac", "", "a", "a", "a", 
"a", "", "b")

x
 [1] "abc" ""    "a"   "b"   "c"   ""    "ab"  "ac"  ""    "a"   "a"   "a"   "a"   ""    "b"  
Run Code Online (Sandbox Code Playgroud)

我想要以下列表作为输出

list("abc", c("a", "b", "c"), c("ab", "ac"), c("a", "a", "a", 
"a"), "b")

[[1]]
[1] "abc"

[[2]]
[1] "a" "b" "c"

[[3]]
[1] "ab" "ac"

[[4]]
[1] "a" "a" "a" "a"

[[5]]
[1] "b"
Run Code Online (Sandbox Code Playgroud)

akr*_*run 9

根据空白元素(i1)创建逻辑向量,获取逻辑向量的累积和以创建用于split向量子集(即没有空白)的组

i1 <- !nzchar(x)
unname(split(x[!i1], cumsum(i1)[!i1]))
Run Code Online (Sandbox Code Playgroud)

-输出

[[1]]
[1] "abc"

[[2]]
[1] "a" "b" "c"

[[3]]
[1] "ab" "ac"

[[4]]
[1] "a" "a" "a" "a"

[[5]]
[1] "b"
Run Code Online (Sandbox Code Playgroud)

  • @TarJae我认为你需要在“summarise”中包裹“list”而不是“paste”,即“summarise(value1 =list(value)) %&gt;% pull(value1)”,因为带有“collapse”的“paste”返回通过用空格折叠来形成单个字符串元素。因此 `as.list` 没有做任何事情,因为它没有对子字符串进行任何分割 (2认同)