Как я могу сгенерировать GUID в R?

Как я могу генерировать GUID и UUID в R?

Я хотел бы иметь возможность генерировать идентификаторы GUID на основе аппаратного обеспечения и т. Д. Машины, на которой выполняется rsession.

Однако в качестве запасного варианта я был бы рад создать идентификаторы UUID, соответствующие rfc4122.

Есть ли пакет, который может создавать GUID? В противном случае у кого-нибудь есть какой-нибудь RFC4122-совместимый код UUID?

Ответы на вопрос(4)

Я ничего не знаю о тонкостях UUID, но подойдет ли что-нибудь подобное?

baseuuid <- paste(sample(c(letters[1:6],0:9),30,replace=TRUE),collapse="")

paste(
    substr(baseuuid,1,8),
    "-",
    substr(baseuuid,9,12),
    "-",
    "4",
    substr(baseuuid,13,15),
    "-",
    sample(c("8","9","a","b"),1),
    substr(baseuuid,16,18),
    "-",
    substr(baseuuid,19,30),
    sep="",
    collapse=""
)
# result like: "f7bd11ed-fca9-42e5-8c3e-4464cd02e0fa"

Это должно соответствоватьhttp://en.wikipedia.org/wiki/Uuid#Version_4_.28random.29

 25 мар. 2015 г., 00:46
@ thelatemail, вы можете использовать инструмент, который не полагается на внутренние генераторы случайных чисел R / предоставлять предупреждение с ответом. Это почти наверняка лучший ответ сейчас:cran.r-project.org/web/packages/uuid/index.html
 fmark08 мая 2012 г., 08:41
Да, выглядит хорошо для UUID. Теперь нам нужны только GUID :)
 24 мар. 2015 г., 22:26
Это опасно, если кто-то использует set.seed.
 25 мар. 2015 г., 03:25
@iShouldUseAName - это почти наверняка есть - не стесняйтесь опубликовать его в качестве ответа. Я не могу путешествовать во времени -uuid был впервые выпущен через 7 месяцев после этого ответа.
 24 мар. 2015 г., 23:13
@iShouldUseAName - я бы не назвал это опасным. На все случайные функции в R влияет set.seed, и теперь я не могу это изменить.

вы можете получить UUID в R, используяsystem() команда.

On Linux (Ubuntu 12.04 LTS):
my_uuid <- system("uuid",intern=T)
my_uuid
[1] 0f62f1de-418d-11e3-8a19-cb0ceccb58ec
On Mac OS X 10.8:
my_uuid <- system("uuidgen", intern=T)
my_uuid
[1] 9A9D64DF-EB01-47E7-B16E-DC0343951883

Насколько я знаю, обаuuid а такжеuuidgen следуетUUID версия 4 формат.

У Bioconductor был пакет Ruuid, которого, похоже, больше нет, но поиск в Google по запросу "Ruuid" будет указывать места, которые вы можете скачать.

 09 мая 2012 г., 17:06
Правильно. Я просто не знаю, почему он пропал. Возможно, просто им это больше не нужно - изначально оно было написано для «графика». Пакет как способ уникальной идентификации узлов. IIRC встроила программное обеспечение libuuid непосредственно в пакет, чтобы избежать хлопот пользователей Windows, возможно, там возникла проблема с лицензией. Я подозреваю, что первый, хотя. Последним выпуском был BioC 2.8 (последний апрель), в котором ничего не было использовано:bioconductor.org/packages/2.8/bioc/html/Ruuid.html
 fmark10 мая 2012 г., 04:23
Я сейчас принимаю ответ от @thelatemail, хотя ваше решение является более долгосрочным. Я свяжусь с сопровождающими, когда у меня будет немного времени.
 fmark09 мая 2012 г., 05:06
Я предполагаю, что это означает, что это больше не поддерживается? Если так, то мне интересно, если бы там было интересно оживить его на R-Forge?
 09 мая 2012 г., 04:17
 09 мая 2012 г., 00:00
Эта версия работает из коробки для меня на Linux. IMO, если есть интерес, вежливым было бы связаться с biocore и спросить, согласны ли они с тем, кто берет на себя роль сопровождающего. В противном случае, это под Художественной лицензией, которая является довольно разрешительной.
Решение Вопроса

Оптимальным выбором для этого сейчас являетсяuuid пакет. Состоит из одной функции (UUIDgenerate) который не полагается на внутренние генераторы случайных чисел R и поэтому не страдает от каких-либо последствий от использованияset.seed в сеансе, как ответ @ thelatemail. Вы можете выбрать, чтобы UUID генерировался либо внутренним генератором случайных чисел пакета, либо на основе времени.

 14 сент. 2018 г., 19:29
в пакете uuid, похоже, есть ошибка. Проще говоря, если вы генерируете вектор uuids, большинство из них будут дубликатами.
 21 сент. 2018 г., 20:31
@ Матвей, я думаю, ты можешь делать что-то странное. Только что протестировал это на MacOS с вектором 1M UUID и имел 1M unique. Никаких ошибок.
 05 мар. 2019 г., 06:42
@ Matthew Они не будут дубликатами, но они могут быть очень похожими. Это не является проблемой.GUIDs are designed to be unique, not random.

Ваш ответ на вопрос