我有一个包含40,000个元素的列表,其中只有16个是唯一的,但是加权都不同。
letters = letters[1:16]
freq=c(8221, 6717, 4912, 3810, 3409, 2807, 2607, 2406, 2206, 1203, 501, 401, 301, 201, 201, 100)
list = rep(letters,freq)
我正在尝试从该列表中获取10,000个4的组合(用尽列表中的每个字母),但是要注意的是,每个排列内都不能重复字母。组合可以重复(“ ABCD”可能会出现多次),但同一字母不能出现在组合中(“ AABC”或“ FFGH”不应计算在内)。
或者,我尝试将其作为一个数据框使用字母和频率作为变量,而不是上面的巨型列表。
letters = letters[1:16]
freq=c(8221, 6717, 4912, 3810, 3409, 2807, 2607, 2406, 2206, 1203, 501, 401, 301, 201, 201, 100)
df = data.frame(letters,freq)
有什么想法吗?
答案 0 :(得分:0)
采样时,您可以指定概率
freq=c(8221, 6717, 4912, 3810, 3409, 2807, 2607, 2406, 2206, 1203, 501, 401, 301, 201, 201, 100)
COMBI = lapply(1:10000,function(i){
sample(letters[1:16],4,prob=freq/sum(freq),replace=F)
})
table(sapply(COMBI,function(i)length(unique(i))))