在R中,我正在生成一个包含发给人员列表的随机部分的文档。如何将伪随机变量与字符串关联?
但是,我希望同一个文件发给同一个人,但生成了多次,返回的总是相同的数字。
比如我品尝一个组号(A或B),我想该文件的任何版本的人员P说,比方说,A
我知道set.seed
功能,但是这需要一个整数,其中我有字符串(人名)。那么,在我的情况下,是否有一种巧妙的方法将字符串映射为整数?或者用于生成随机文档的其他(更简单的)解决方案?
在R中,我正在生成一个包含发给人员列表的随机部分的文档。如何将伪随机变量与字符串关联?
但是,我希望同一个文件发给同一个人,但生成了多次,返回的总是相同的数字。
比如我品尝一个组号(A或B),我想该文件的任何版本的人员P说,比方说,A
我知道set.seed
功能,但是这需要一个整数,其中我有字符串(人名)。那么,在我的情况下,是否有一种巧妙的方法将字符串映射为整数?或者用于生成随机文档的其他(更简单的)解决方案?
也许文本转换为十六进制或位会帮助你:
# 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."
我不知道怎么做,在R,但它应该是很容易实现的散列函数映射一个字符串一个整数。例如:http://stackoverflow.com/a/2624210/2947592 – wvdz
如果在您的示例中,您可以预先知道所有人员,则可以使用名称作为级别创建一个因子,并使用整数表示来设置种子 –
使用因子(你可能已经拥有了,因为这是读取。*函数的字符数据的默认值),并以'as.numeric'转换。 –