Как я могу создать GUID в R?

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

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

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

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

Ответы

Ответ 1

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

Ответ 2

Я ничего не знаю о тонкостях 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

Ответ 3

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

В Linux (Ubuntu 12.04 LTS):

my_uuid <- system("uuid",intern=T)
my_uuid
[1] 0f62f1de-418d-11e3-8a19-cb0ceccb58ec

В Mac OS X 10.8:

my_uuid <- system("uuidgen", intern=T)
my_uuid
[1] 9A9D64DF-EB01-47E7-B16E-DC0343951883

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

Ответ 4

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