gpt4 book ai didi

r - 用 R 生成 n 个唯一的名字

转载 作者:行者123 更新时间:2023-12-05 00:58:53 24 4
gpt4 key购买 nike

我想使用 R 生成 n 个唯一名称。这是我现在拥有的代码:

library(randomNames)
set.seed(6232015)
gen.names <- function(n){
while(n>0){
names <- unique(randomNames(n=n))
n <- n - length(names)
names2 <- c(unique(randomNames(n=n)), names)
n <- n - length(names2)
}
return(names2)
}
nombres<- gen.names(n = 40000)

我得到的不是 40000,而是 39999。如果我要求少于 40000,我会得到那个数字。我的代码有什么问题?

谢谢!

最佳答案

您在第二次调用中获得的名称不唯一,导致名称丢失。然后 n 计算中断,允许您离开 while 循环。

让我们来看看它:

names <- unique(randomNames(n=n))
n <- n - length(names)

你有 38986 个唯一的名字,现在 n 是 1014

现在:

names2 <- c(unique(randomNames(n=n)), names)
n <- n - length(names2)

你得到了 1013 个新的唯一名称,在 names2 中给出了 39999 个名称,现在 n 是 1014 - 39999 = -38985

你到达了循环的末尾,当你小于 1 时退出,并返回你的值,但缺少 1 个名字。

这是一个 hacky 解决方案,生成 2000 个额外的名称,然后在循环中检查:

gen.names <- function(n){
names<-c()
while(length(names)<n){
names <- unique(c(randomNames(n=n+2000),names))
}
return(names[1:n])
}

关于r - 用 R 生成 n 个唯一的名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31016035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com