Как проверить, содержит ли вектор повторяющиеся элементы? - PullRequest
5 голосов
/ 10 марта 2011

как проверить, содержит ли вектор повторяющиеся элементы в R?

Ответы [ 4 ]

16 голосов
/ 10 марта 2011

Я думаю, что нашел ответ.Используйте функцию duplicated ():

a=c(3,5,7,2,7,9)
b=1:10
any(duplicated(a)) #True
any(duplicated(b)) #False
4 голосов
/ 10 марта 2011

Также попробуйте rle(x), чтобы найти длины прогонов одинаковых значений в x.

2 голосов
/ 10 марта 2011

Если вы ищете последовательные повторы, вы можете использовать diff.

a <- 1:10
b <- c(1:5, 5, 7, 8, 9, 10)
diff(a)
diff(b)

или в любом месте вектора:

length(a) == length(unique(a))
length(b) == length(unique(b))
0 голосов
/ 10 марта 2011

отметьте это:

> all(diff(c(1,2,3)))
[1] TRUE
Warning message:
In all(diff(c(1, 2, 3))) : coercing argument of type 'double' to logical
> all(diff(c(1,2,2,3)))
[1] FALSE
Warning message:
In all(diff(sort(c(1, 2, 4, 2, 3)))) : coercing argument of type 'double' to logical

Вы можете добавить кастинг, чтобы избавиться от предупреждений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...