繁体   English   中英

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的条件进行子集化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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM