r - 如何使用 R 生成唯一 UUID 值的数组?
问题描述
我想创建一个充满 UUID 值的数据框。显然,数据框中的每个 UUID 都应该是唯一的。此外,我的最终用途要求将每个 UUID 值括在大括号中(例如:{e681b500-dafb-11e9-9912-1319dd65aab1})。
我正在使用包uuid。不幸的是,我发现在某些情况下,命令UUIDgenerate()不会生成唯一的 UUID 值。
下面的代码初始化所需大小的数据帧,然后使用 for 循环为数据帧中的每个索引调用 UUIDgenerate()。我在 paste() 命令中调用了该命令,以将每个 UUID 值括在大括号中。
library('uuid')
NoOfRows = 5
NoOfCols = 150
df_UUIDs = data.frame(matrix(ncol=NoOfCols,nrow=NoOfRows))
for (i in c(1:NoOfRows)){
for (j in c(1:NoOfCols)){
df_UUIDs[i,j] = paste("{",UUIDgenerate(FALSE),"}",sep="")
}
}
上面的代码确实成功地生成了一个包含在大括号中的 UUID 的数据帧,但这些值并不都是唯一的!
为了说明这一点,下面的代码计算数据框中的条目数,然后计算数据框中唯一值的数量。测试表明,上面的代码只生成了 2-38 个唯一 UUID,而应该有 750 个。
library('dplyr')
dim(as.data.frame(unlist(df_UUIDs)))[1]
dim(distinct(as.data.frame(unlist(df_UUIDs))))[1]
以下是一些额外的线索:
- 每次运行代码时生成的唯一值的数量都不同
- 当参数 use.time=TRUE 时不会发生错误
- 省略 paste() 命令时不会发生错误
- 虽然这个错误发生在我的机器(R 3.6.1,Windows,x86-64)上,但在其他地方测试时不会发生,例如rdrr.io(R 3.4.4,linux-gnu,x86_64)。
其他人是否遇到过与 UUIDgenerate() 类似的问题?有谁知道为什么会发生错误?
解决方案
推荐阅读
- azure - 如何从 Prometheus 服务器中的 Azure app-insight 获取自定义指标?
- python - 将两个变量放在这样的 if 语句中是什么意思:variable[variable2]?
- python - 如何在条形图上绘制一条垂直线,其日期时间标签只有谨慎的 x 轴刻度位置?
- assembly - 如何在asm中的函数序言之前中断
- azure - Terraform AZ CLI 本地执行命令限制
- javascript - 如何根据单元格值将 Google Sheet 中的数据显示到 Google Web App?
- javascript - 使用 PptxGenJS 向 PowerPoint 幻灯片添加过渡
- python - 在 KeyCloak 中绕过“执行以下操作”?
- facebook - 如何为 Instagram 基本显示 API 实现 Instagram 或 Facebook 登录按钮的继续?
- c++ - 错误:非静态引用成员 - 不能使用默认赋值运算符