如何在R中生成GUID?

时间:2012-05-08 05:04:09

标签: r random guid uuid

如何在R中生成GUID和UUID?

我希望能够根据运行rsession的机器的硬件等生成GUID。

然而,作为后备,我很乐意创建符合rfc4122的UUID。

是否有可以创建GUID的包?否则,是否有人有一些与RFC4122兼容的UUID代码?

4 个答案:

答案 0 :(得分:14)

现在最好的选择是uuid包。它由一个函数(UUIDgenerate)组成,它不依赖于R的内部随机数生成器,因此在会话中使用set.seed不会产生任何后果。 @ thelatemail的回答是这样的。您可以选择通过程序包的内部随机数生成器或基于时间生成UUID。

答案 1 :(得分:10)

我对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

一致

答案 2 :(得分:9)

如果您在Unix环境中使用R,则可以使用system()命令在R中获取UUID。

在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

据我所知,uuiduuidgen都遵循UUID Version 4格式。

答案 3 :(得分:3)

Bioconductor有一个似乎不再存在的Ruuid包,但谷歌搜索“Ruuid”将指向你可以下载它的地方。