Как сказать то, что находится в одном векторе и не другом?

@ Ответ Boni2k не работает для меня.

Мне нужно переименовать корень build.gradle.kts обратно в build.gradle, исправить синтаксическую ошибку, синхронизировать проект (который сразу работает нормально) и переименовать файл обратно в build.gradle.kts. Тогда ошибка исчезнет, ​​и я смогу успешно синхронизировать проект.

Что я сделал, чтобы поднять ошибку, так это то, что я переместил проект в другую папку и переименовал проект.

74
задан Jaap 23 June 2016 в 13:19
поделиться

5 ответов

вы можете использовать функцию setdiff () (установить разницу):

> setdiff(x, y)
[1] 1
107
ответ дан 24 November 2019 в 11:50
поделиться

Если:

x <- c(1,2,3,4)
y <- c(2,3,4)

Любое из этих выражений:

setdiff(x, y)
x[!(x %in% y)]
x[is.na(match(x,y))]
x[!(is.element(x,y))]

даст Вам правильный ответ [1] 1, если цель состоит в том, чтобы найти значения/символы в x, который не присутствует в y.

Однако применение вышеупомянутые выражения могут быть хитрыми и могут дать нежелательные результаты в зависимости от природы вектора и положения X и Y в выражении. Например, если:

x <- c(1,1,2,2,3,4)
y <- c(2,3,4)

и цель должен только найти уникальные значения/символы в x, который не присутствует в y или наоборот. Применение любого из этих выражений все еще даст правильный ответ [1] 1:

union(setdiff(x, y), setdiff(y, x))

Благодаря вкладу [1 111] Jeromy Anglim

ИЛИ:

difference <- function(x, y) {
c(setdiff(x, y), setdiff(y, x))
}
difference(y,x)

Благодаря вкладу [1 112] Исправительно-трудовой лагерь

0
ответ дан 24 November 2019 в 11:50
поделиться

Да. Для векторов вы можете просто использовать оператор % in% или функцию is.element () .

> x[!(x %in% y)]
1

Для матрицы существует множество различных подходов. merge () , вероятно, самый простой. Я предлагаю изучить этот вопрос для этого сценария .

53
ответ дан 24 November 2019 в 11:50
поделиться

The help file in R for setdiff, union, intersect, setequal, and is.element provides information on the standard set functions in R.

setdiff(x, y) returns the elements of x that are not in y.

As noted above, it is an asymmetric difference. So for example:

> 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
27
ответ дан 24 November 2019 в 11:50
поделиться
x[is.na(match(x,y))]
12
ответ дан 24 November 2019 в 11:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: