/ / expressão numérica tem x elementos: somente o primeiro usado - r, dplyr

expressão numérica tem x elementos: somente o primeiro usado - r, dplyr

Eu estou tentando quebrar um for-loop em uma tibble, em seguida, usar o summarize() função para obter o valor final.

Este é o loop

prob <- NULL
for(i in(4:16)){
p1 = dbinom(i,16,0.2)
k=13-i
p2=sum(dbinom(k:30,30,0.2))
prob = c(prob,p1*p2)
print(i)
}

Eu cheguei até aqui

df <- tibble( i=4:16) %>%
mutate(p1=dbinom(i,16,0.2),k=as.integer(13-i)) %>%
mutate(p2=sum(dbinom(k:30,30,0.2)))
df

isso produz o seguinte erro

Warning message:
In k:30 : numerical expression has 13 elements: only the first used

O aviso diz que o k tem apenas 13 elementos, mas isso não deve ser um problema, porque o resto dos meus dados tem 13 elementos. Não sei como consertar o problema.

Respostas:

2 para resposta № 1

você deve manipular dados por linha: tente isso

tibble( i=4:16) %>%
mutate(p1=dbinom(i,16,0.2),k=as.integer(13-i)) %>%
rowwise() %>%
mutate(p2=sum(dbinom(k:30,30,0.2)))