Если вам нужна взвешенная вероятность слова на основе вашего freq
(преобразованного в integer
), то, возможно,
sample(tb$freq, size = 2, prob = tb$freq)
Давайте посмотрим, какова тенденция для этого расставить приоритеты для слов, которые мы считаемдолжно быть.Для демонстрации я опробую word
на основе их freq
(так как для меня это имеет больше смысла), вы можете перемещать переменные по своему усмотрению.
samps <- replicate(1000, sample(tb$word, size = 2, prob = tb$freq))
str(samps)
# chr [1:2, 1:1000] "water" "apple" "water" "banana" "watermelon" "banana" ...
sort(table(samps))
# samps
# sky watermelon blue water apple banana
# 93 151 166 370 572 648
replicate
Вызов дает нам matrix
, поэтому, сортируя частоты, мы видим, что banana
более вероятно, чем все остальные.
Мы можем видеть, что пропорции примерно равны с
sort(table(samps)) / sum(table(samps))
# samps
# sky watermelon blue water apple banana
# 0.0465 0.0755 0.0830 0.1850 0.2860 0.3240
tb$pct <- tb$freq / sum(tb$freq)
tb <- tb[ order(tb$pct), ]
tb
# freq word pct
# 6 1 sky 0.03571429
# 2 2 watermelon 0.07142857
# 5 2 blue 0.07142857
# 3 5 water 0.17857143
# 4 8 apple 0.28571429
# 1 10 banana 0.35714286
Данные
word <- c("banana", "watermelon", "water", "apple", "blue", "sky")
freq <- as.integer(c("10", "2", "5", "8", "2", "1"))
tb <- data.frame(freq, word)