Как сделать уникальный набор имен из вектора строк? - PullRequest
17 голосов
/ 02 июня 2010

У меня есть вектор строк. Проверьте мой вектор, это awesome:

> awesome
[1] "a" "b" "c" "d" "d" "e" "f" "f"

Я хотел бы создать новый вектор такой же длины, что и awesome, но в случае необходимости строки были бы уникальными. Например, допустимый вывод моей желаемой функции будет

> awesome.uniqueified
[1] "a" "b" "c" "d.1" "d.2" "e" "f.1" "f.2"

Есть ли простой, R-тонический и красивый способ сделать это? Я должен сказать, что мой список в реальной жизни (он не называется awesome) содержит 25000 идентификаторов наборов микрочипов.

Я всегда нервничаю, когда начинаю писать небольшие универсальные функции (что, я уверен, я мог бы сделать), так как я уверен, что некоторые гуру R сталкивались с этой проблемой в прошлом, прибили ее с помощью невероятного алгоритма даже не нужно хранить больше половины элемента в векторе. Я просто не уверен, как они могли это назвать. Вероятно, нет uniqueify.

1 Ответ

19 голосов
/ 02 июня 2010

Попробуйте make.unique(), где самый первый пример страницы справки уже находится на месте:

make.unique(c("a", "a", "a"))
[1] "a"   "a.1"   "a.2"

На странице справки Томас Минка указан как автор. Купи ему пива в один прекрасный день:)

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