Digamos que tengo estos dos vectores:
x <- c(1,2,4,6,7)
y <- c(3,7)
¿Cómo puedo dividir x
en los elementos que son más pequeños que cada elemento de y
? Por ejemplo: c(1,2) | c(4,6,7)
. .
Creo que una opción sería hacer un bucle doble y devolver el elemento más pequeño en el y
que es más pequeño que el actual en x
: c(3,3,3,7,7)
. Luego podría dividir usando este vector.
j <- 1
sapply(x, function(i){
if (i <= y[j]) {
y[j]
} else {
if (j < length(y)){
j <- j + 1
}
y[j]
}
})
Siento que hay una forma más inteligente de hacer esto, pero no puedo resolverlo.
Aquí hay un método base R usando split
y findInterval
:
split(x, findInterval(x, y, rightmost.closed=TRUE))
$`0`
[1] 1 2
$`1`
[1] 4 6 7
La findInterval
función devuelve un vector que categoriza los valores de las variables en x a lo largo de sus criterios en y. La split
función separa el vector según se desee y devuelve una lista con nombre.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras