vacio - plot en r
¿Cómo saber qué hay en un vector y no en otro? (5)
En matlab hay una manera de encontrar los valores en un vector pero no en el otro.
por ejemplo:
x <- c(1,2,3,4)
y <- c(2,3,4)
¿Hay alguna función que me diga que el valor en x
que no está en y
es 1?
El archivo de ayuda en R para setdiff, union, intersect, setequal y is.element proporciona información sobre las funciones de conjunto estándar en R.
setdiff(x, y)
devuelve los elementos de x
que no están en y
.
Como se señaló anteriormente, es una diferencia asimétrica. Así por ejemplo:
> x <- c(1,2,3,4)
> y <- c(2,3,4,5)
>
> setdiff(x, y)
[1] 1
> setdiff(y, x)
[1] 5
> union(setdiff(x, y), setdiff(y, x))
[1] 1 5
Sí. Para los vectores, simplemente puede usar la función %in%
o is.element()
.
> x[!(x %in% y)]
1
Para una matriz, hay muchos enfoques de diferencia. merge()
es probablemente el más directo. Sugiero mirar esta pregunta para ese escenario .
puede usar la función setdiff () (establecer diferencia):
> setdiff(x, y)
[1] 1
setdiff()
es una función complicada porque la salida depende del orden de la entrada. En su lugar, puede escribir una función simple como tal que hace exactamente lo contrario de intersect
. Esto es mucho mejor
>difference <- function(x, y) {
c(setdiff(x, y), setdiff(y, x))
}
#Now lets test it.
>x <- c(1,2,3,4)
>y <- c(2,3,4,5)
>difference(x,y)
[1] 1 5
x[is.na(match(x,y))]