R - 根据条件对矩阵组进行子集化

R - Subsetting to group of matrices based on a condition

我正在尝试根据列中的特定值对矩阵进行子集化。但我希望我的子集位于多个单独的矩阵中。例如,假设我有一个矩阵 ccc

aaa=c(1,1,1,2,5,1,2,1,1,3,1,1,1,1,1,1,4)
bbb=c(4,4,4,4,3,3,3,3,2,2,2,2,3,4,5,6,7)
ccc=cbind(aaa,bbb)

我想使用条件 ccc[,1]==1 进行子集化,同时我希望将子集分成几个由断点分隔的矩阵。休息时间基于 aaa==1 的运行。为了清楚起见,我需要按以下方式输出,

ddd1
     aaa bbb
[1,]   1   4
[2,]   1   4
[3,]   1   4

ddd2
aaa bbb 
  1   3 

ddd3
     aaa bbb
[1,]   1   3
[2,]   1   2

ddd4
     aaa bbb
[1,]   1   2
[2,]   1   2
[3,]   1   3
[4,]   1   4
[5,]   1   5
[6,]   1   6

ddd1,..,ddd4 是子集矩阵。我希望我说清楚了。有什么建议吗?

使用splitcumsum:

ccc <- data.frame(ccc)
split(ccc[ccc$aaa==1,], cumsum(ccc$aaa!=1)[ccc$aaa==1])

#$`0`
#  aaa bbb
#1   1   4
#2   1   4
#3   1   4
#
#$`2`
#  aaa bbb
#6   1   3
# 
#$`3`
#  aaa bbb
#8   1   3
#9   1   2
# 
#$`4`
#   aaa bbb
#11   1   2
#12   1   2
#13   1   3
#14   1   4
#15   1   5
#16   1   6