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

标签 r subset

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

相关文章:

r - 自定义格函数(组参数)中的范围

r - as_tibble 控制扁平化程度

r - 具有 2 个条件的子集不适用于哪个功能

r - 如何测试三个变量是否相等 [R]

r - 为间隔创建标签

r - 将数据框拆分为列表中的多个数据框,每列分别

r - 如何在不丢失 NA 行的情况下对 R 中的数据进行子集化?

r - 散点图点子集颜色形状 ifelse

R:根据组和不同条件对数据框进行子集化

python - 用于过滤与模式匹配的字符串列表的正则表达式