Как сказать, что находится в одном векторе, а не в другом?
в matlab есть способ найти значения в одном векторе, но не в другом.
например:
x <- c(1,2,3,4)
y <- c(2,3,4)
есть ли функция, которая сказала бы мне, что значение в x
это не y
это 1?
5 ответов:
файл справки в R для setdiff, union, intersect, setequal и is.элемент предоставляет информацию о стандартных функциях набора в R.
setdiff(x, y)
возвращает элементыx
, неy
.как отмечалось выше, это асимметричная разница. Так например:
> 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
setdiff()
это сложная функция, потому что выход зависит от порядка ввода. Вместо этого вы можете написать простую функцию как таковую, которая делает полную противоположностьintersect
. Это гораздо лучше.>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