gpt4 book ai didi

R - 基于条件对矩阵组进行子集化

转载 作者:行者123 更新时间:2023-12-04 09:54:16 24 4
gpt4 key购买 nike

我正在尝试根据列中的特定值对矩阵进行子集化。但我希望我的子集在多个单独的矩阵中。例如,假设我有一个矩阵 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

关于R - 基于条件对矩阵组进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30065375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com