分裂矢量

Bri*_*rin 4 r

我有一个由"Y"和"N"组成的向量x.

> x
 [1] Y N N N N N N N N N N Y N N N N
Run Code Online (Sandbox Code Playgroud)

我想把它拆分成

> x1
 [1] Y N N N N N N N N N N 
Run Code Online (Sandbox Code Playgroud)

> x2
 [1] Y N N N N 
Run Code Online (Sandbox Code Playgroud)

这些向量总是以"Y"开头,并在下一个"Y"之前接收所有"N".关于如何做到这一点的建议?

Jos*_*ich 7

您可以使用单行的组合cumsumsplit来执行此操作:

x <- c("Y","N","N","N","N","N","N","N","N","N","N","Y","N","N","N","N")
v <- split(x,paste("x",cumsum(x=="Y"),sep=""))
Run Code Online (Sandbox Code Playgroud)

  • 使用`cumsum`和`split`的非常优雅的解决方案+1 (3认同)