Я хочу создать фрейм данных, полный значений UUID.Очевидно, что каждый UUID в кадре данных должен быть уникальным.Кроме того, мое конечное использование требует, чтобы каждое значение UUID было заключено в фигурные скобки (например: {e681b500-dafb-11e9-9912-1319dd65aab1}).
Я использую пакет uuid .К сожалению, я обнаружил, что в некоторых сценариях команда UUIDgenerate () не генерирует уникальные значения UUID.
Приведенный ниже код инициализирует фрейм данных нужного размера, а затем использует дляцикл для вызова 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 ()?У кого-нибудь есть идея, почему возникнет ошибка?