В продолжение моего предыдущего запроса
vocab
w text
1 archive
2 name
3 atheism
4 resources
5 alt
df
w n d w_d tw_d tw_n w_n P(W_j)
1 1 196 3 1240 47821 2 0.028130269
1 1 47 2 1220 47821 2 0.028130269
2 12 4434 1 702 47490 8 0.035051912
3 12 4434 1 673 47490 8 0.035051912
5 12 4398 1 53 47490 8 0.4
3 12 4564 11 1539 47490 8 0.035051912
Для каждого d в df мне нужно вычислить следующие формулы, принимая во внимание все w из вокабеля dataframe
, например, в случаеd = 4434,
df$ans <- max(log(0.3505))+sum(log(47490/844174)+log(47490/844174)) # value when d=4434 and n =12
Аналогично, мне нужно вычислить все значения от n = 1 до 20 для d = 4434
для каждого значения d в
max(log(0.02813027)+sum(log(2/47821),log(2/47821)))
= -23.73506
Сейчас у меня есть следующий код:
df$ans<- pmax(log(df$`P(W_j)`)+(log(df$'w_n'/df$'tw_n') +
log(df$'w_n'/df$'tw_n')),
log(df$'w_n'/df$'tw_n'))
Другой способ, основанный на предложении, я пытаюсь сделать так:
df %>%
group_by(d)
mutate(ans = pmax(log(P(W_j))+(log(w_n/tw_n) +
log('w_n'/'tw_n')),
log('w_n'/'tw_n'))