我可以使用
创建单个字母的序列LETTERS[seq( from = 1, to = 10 )]
letters[seq( from = 1, to = 10 )]
我可以使用
random
包创建各种长度的随机字符串
library(random)
string <- randomStrings(n=10, len=5, digits=TRUE, upperalpha=TRUE,
loweralpha=TRUE, unique=TRUE, check=TRUE)
不幸的是,我无法使用
set.seed
功能,例如2
。
有没有一种方法可以在每次运行 R 文件时创建相同(随机)的(唯一)字符串组合?
我的结果将如下所示(每次运行该函数时都有相同的结果):
V1
[1,] "k7QET"
[2,] "CLlWm"
[3,] "yPuwh"
[4,] "JJqEX"
[5,] "38soF"
[6,] "xkozk"
[7,] "uaiOW"
[8,] "tZcrW"
[9,] "8K4Cc"
[10,] "RAhuU"
在文件 test.R 中,添加以下内容
set.seed(1)
stringi::stri_rand_strings(10, 5)
然后每次都可以重现。
replicate(5, source("test.R", verbose = FALSE)$value)
# [,1] [,2] [,3] [,4] [,5]
# [1,] "GNZuC" "GNZuC" "GNZuC" "GNZuC" "GNZuC"
# [2,] "twed3" "twed3" "twed3" "twed3" "twed3"
# [3,] "CAgNl" "CAgNl" "CAgNl" "CAgNl" "CAgNl"
# [4,] "UizNm" "UizNm" "UizNm" "UizNm" "UizNm"
# [5,] "vDe7G" "vDe7G" "vDe7G" "vDe7G" "vDe7G"
# [6,] "N0NrL" "N0NrL" "N0NrL" "N0NrL" "N0NrL"
# [7,] "TbUBp" "TbUBp" "TbUBp" "TbUBp" "TbUBp"
# [8,] "fn6iP" "fn6iP" "fn6iP" "fn6iP" "fn6iP"
# [9,] "oemYW" "oemYW" "oemYW" "oemYW" "oemYW"
# [10,] "m1Tjg" "m1Tjg" "m1Tjg" "m1Tjg" "m1Tjg"
作为
source()
的替代方案,您可以在那里使用 parse()
。
replicate(5, eval(parse("test.R")))
基础 R 的替代解决方案:
set.seed(1)
result <- rawToChar(as.raw(sample(c(65:90,97:122), 5, replace=T)))
受到另一篇文章的回答的启发:https://stackoverflow.com/a/4370074/8297546
制作一些随机数向量(在一定范围内)并将它们提供给
intToUtf8
。