[英]Splitting numeric vectors in R
如果我有一個向量c(1,2,3,5,7,9,10,12)...和另一個向量c(3,7,10),我將如何產生以下結果:
[[1]]
1,2,3
[[2]]
5,7
[[3]]
9,10
[[4]]
12
請注意3 7和10如何成為每個列表元素的最后一個數字(最后一個除外)。 或某種意義上的“斷點”。 我確定有一個我不了解或內存不足的簡單R函數。
這是使用cut
和split
的一種方法:
split(x, cut(x, c(-Inf, y, Inf)))
#$`(-Inf,3]`
#[1] 1 2 3
#
#$`(3,7]`
#[1] 5 7
#
#$`(7,10]`
#[1] 9 10
#
#$`(10, Inf]`
#[1] 12
能做
split(x, cut(x, unique(c(y, range(x)))))
## $`[1,3]`
## [1] 1 2 3
## $`(3,7]`
## [1] 5 7
## $`(7,10]`
## [1] 9 10
## $`(10,12]`
## [1] 12
類似於@beginneR的答案,但使用findInterval
而不是cut
split(x, findInterval(x, y + 1))
# $`0`
# [1] 1 2 3
#
# $`1`
# [1] 5 7
#
# $`2`
# [1] 9 10
#
# $`3`
# [1] 12
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.