Вы можете использовать sample
для количества строк в наборе данных.
mtcars$ID <- sample(nrow(mtcars))
Диапазон для этого будет от 1 до количества строк в данных, и он будет произвольно назначен для каждой строки.
При необходимости он также может быть заключен в функцию:
get_a_unique_id <- function(data) sample(nrow(data))
mtcars$ID <- get_a_unique_id(mtcars)
iris$ID <- get_a_unique_id(iris)
Относительно попытки ОП на for
l oop. NULL
удаляет столбец, тогда как NA
инициализирует его с NA
. Так как в mtcars
столбец отсутствует, это приводит к ошибке. Также l oop for (i in mtcars){
перебирает значения столбцов, а не строк. Попробуйте
for (i in mtcars){
print(i)
}
Следовательно, оно должно быть
mtcars$ID <- NA
for (i in seq_len(nrow(mtcars))){
mtcars$ID[i] <- runif(1, min=0, max=100)
}
Однако даже это не гарантирует 100% наличия уникального значения для каждой строки, так как с runif
мы можем иметь то же самое номера.