如何将伪随机变量与字符串相关联?

时间:2016-03-03 22:59:27

标签: r random hash-function

在R中,我正在制作一份包含发给人员名单的随机部分的文件。

但是,我希望发给同一个人但同时生成多次的同一份文件总是返回相同的数字。

例如,我对一个团队编号(A或B)进行抽样,我希望P的任何版本的文件都可以提到,例如,A。

我知道set.seed函数,但这需要一个整数,其中我有字符串(人名)。那么,在我的情况下,是否有一种聪明的方法将字符串映射到整数?或者用于生成随机文档的其他(更简单)解决方案?

1 个答案:

答案 0 :(得分:1)

也许将文本转换为十六进制或位可以帮助您:

# simple example
x <- charToRaw("Matthew")
y <- rawToBits(x)
packBits(y)
# [1] 4d 61 74 74 68 65 77
rawToChar(packBits(y))
# [1] "Matthew"

# with more data
df <- data.frame(names=c("Matthew M.", "Mark T.", "Luke S.", "John U."), stringsAsFactors = FALSE)
df$Raw <- lapply(df$names, FUN=charToRaw)
df$Bits <- lapply(df$Raw, FUN=rawToBits)

bitsToChar <- function(x) {rawToChar(packBits(x))}
df$Char <- lapply(df$Bits, FUN=bitsToChar)
df$Char
# [[1]]
# [1] "Matthew M."
# 
# [[2]]
# [1] "Mark T."
# 
# [[3]]
# [1] "Luke S."
# 
# [[4]]
# [1] "John U."