Как я могу создать 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" указывает на места, которые вы можете загрузить.