[英]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
是子集矩阵。 我希望我说清楚。 有什么建议怎么办?
使用split
和cumsum
:
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.