Вопрос по r, python – Как удалить повторяющиеся элементы в векторе, аналогично «set» в Python
У меня есть вектор с повторяющимися элементами, и я хотел бы удалить их, чтобы каждый элемент появлялся только один раз.
В Python я мог бы построитьSet
из вектора, чтобы достичь этого, но как я могу сделать это в R?
Можете ли вы привести некоторые примеры данных, чтобы проиллюстрировать, что вы подразумеваете под «повторением». Не все пользователи R будут иметь представление о том, что "просто" кормят ". вектор к набору & quot; в питоне значит. Повторяя, вы имеете в виду повторяющиеся или смежные повторения? Для бывшего см
?duplicated
Чтобы удалить только смежные повторы, используйте пример формы ответа ниже
v <- c(1, 1, 5, 5, 2, 2, 6, 6, 1, 3)
Вы можете сравнить вектор со смещенной версией самого себя:v[c(TRUE, !v[-length(v)] == v[-1])]
, Он вернется1 5 2 6 1 3
сохраняя второе повторение1
это не смежно с первыми.
3
ответа
вы можете сравнить вектор со смещенной версией самого себя:
v <- c(1, 1, 5, 5, 5, 5, 2, 2, 6, 6, 1, 3, 3)
v[c(TRUE, !v[-length(v)] == v[-1])]
[1] 1 5 2 6 1 3
То же самое можно написать немного более элегантно, используяdplyr:
library(dplyr)
v[v != lag(v)]
[1] NA 5 2 6 1 3
АН вернулсяlag()
удаляет первое значение, чтобы сохранить первое значение, вы можете изменить значение по умолчанию на значение, которое будет отличаться от первого значения.
v[v != lag(v, default = !v[1])]
[1] 1 5 2 6 1 3
Похожие вопросы
Можете ли вы привести некоторые примеры данных, чтобы проиллюстрировать, что вы подразумеваете под «повторением». Не все пользователи R будут иметь представление о том, что "просто" кормят ". вектор к набору & quot; в питоне значит. Повторяя, вы имеете в виду повторяющиеся или смежные повторения? Для бывшего см<code>?duplicated</code>
Чтобы удалить только смежные повторы, используйте пример формы ответа ниже<code>v <- c(1, 1, 5, 5, 2, 2, 6, 6, 1, 3)</code>Вы можете сравнить вектор со смещенной версией самого себя:<code>v[c(TRUE, !v[-length(v)] == v[-1])]</code>, Он вернется<code>1 5 2 6 1 3</code>сохраняя второе повторение<code>1</code> это не смежно с первыми.