3 Stimmen

Zerlegen numerischer Vektoren in R

Wenn ich einen Vektor habe, c(1,2,3,5,7,9,10,12)... und einen anderen Vektor c(3,7,10), wie würde ich folgendes erzeugen:

[[1]]
1,2,3

[[2]]
5,7

[[3]]
9,10

[[4]]
12

Beachten Sie, wie 3, 7 und 10 die letzte Zahl jedes Listenlements werden (außer der letzten). Oder in gewisser Weise der "Breakpoint". Ich bin sicher, dass es eine einfache R-Funktion gibt, von der ich nichts weiß oder die ich vergessen habe.

3voto

talat Punkte 65963

Hier ist eine Möglichkeit, cut und split zu verwenden:

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

1voto

David Arenburg Punkte 89487

Könnte tun

teile(x, schneide(x, einzigartig(c(y, reichweite(x)))))

## $`[1,3]`
## [1] 1 2 3

## $`(3,7]`
## [1] 5 7

## $`(7,10]`
## [1]  9 10

## $`(10,12]`
## [1] 12

0voto

konvas Punkte 13771

Ähnlich wie die Antwort von @beginneR, aber mit findInterval anstelle von cut

split(x, findInterval(x, y + 1))
# $`0`
# [1] 1 2 3
# 
# $`1`
# [1] 5 7
# 
# $`2`
# [1]  9 10
# 
# $`3`
# [1] 12

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X