Функция duplicated
последовательно проходит через свои аргументы и возвращает ИСТИНА, если предыдущее значение было идентично текущему значению.Это универсальная функция, поэтому у нее есть определение по умолчанию (для векторов), но также и определение для других классов, таких как объекты класса data.frame.Функция подмножества обрабатывает выражения, передаваемые как второй или третий аргумент, как если бы имена столбцов были объектами первого класса.Это называется «нестандартная оценка».(Обратите внимание на оператор отрицания.) Таким образом, этот вызов subset
вернет строки data.frame, где только первый экземпляр столбца с именем "x" не дублируется.Вероятно, он вернул бы фрейм данных только с количеством строк, равным количеству уникальных элементов в столбце x.
> dat <- data.frame( x =sample(1:5, 20, repl=TRUE), y=1:5, z=1:4)
> dat
x y z
1 2 1 1
2 2 2 2
3 2 3 3
4 5 4 4
5 4 5 1
6 1 1 2
7 2 2 3
8 2 3 4
9 5 4 1
10 1 5 2
11 2 1 3
12 4 2 4
13 5 3 1
14 4 4 2
15 3 5 3
16 3 1 4
17 4 2 1
18 4 3 2
19 1 4 3
20 1 5 4
> subset(dat, !duplicated(x))
x y z
1 2 1 1
4 5 4 4
5 4 5 1
6 1 1 2
15 3 5 3