我正在尝试基于正则表达式生成随机文本数据。我希望能够在 R 中做到这一点,因为我知道 R 确实具有正则表达式功能。有什么线索吗?
这个问题以前在论坛(StackOverflow Post 1,StackOverflow Post 2等)中出现过,但他们总是提到基于其他编程平台(perl,.NET,...)的解决方案,而不是 R。
我正在尝试基于正则表达式生成随机文本数据。我希望能够在 R 中做到这一点,因为我知道 R 确实具有正则表达式功能。有什么线索吗?
这个问题以前在论坛(StackOverflow Post 1,StackOverflow Post 2等)中出现过,但他们总是提到基于其他编程平台(perl,.NET,...)的解决方案,而不是 R。
虽然从正则表达式生成随机数据是一个方便的接口,但 R 并不直接支持它。不过,您可以尝试一级间接:生成随机数并将它们转换为字符串。例如,要将数字转换为字符,您可以使用以下命令:
> rawToChar(as.raw(65))
[1] "A"
通过仔细选择要绘制的随机数的范围,您可以将自己限制为可能对应于正则表达式的所需 ASCII 字符集,例如字符类[a-zA-Z]
。
显然,这既不是优雅的解决方案,也不是有效的解决方案,但它至少是原生的,并且可以通过一些样板文件为您提供所需的效果。
然而,仍然不是一个完美的答案,Mark Heckmann建议使用随机字符串生成器来部分解决这个问题:
GenRandomString <- function(n=1, lenght=12)
{
randomString <- c(1:n) # initialize vector
for (i in 1:n)
{
randomString[i] <- paste(sample(c(0:9, letters, LETTERS),
lenght, replace=TRUE),
collapse="")
}
return(randomString)
}
GenRandomString(5,8)
输出:5 个随机字符串,8 个字符长
[1] "l42DjAtc" "jW6TdRZw" "5aAvMuDL" "iC3xOvst" "gqgSzE83"
这可以用于各种情况,例如生成密钥、名称、模拟等。