Objeto de suma en una columna entre un intervalo definido por otra columna
Tengo un marco de datos como este:
df
A B
[1,] 1 4
[2,] 2 3
[3,] 3 5
[4,] 4 7
[5,] 5 5
[6,] 6 7
[7,] 7 4
[8,] 8 7
[9,] 9 3
[10,] 10 7
Necesito sumar los números en la columna B que se encuentran entre un cierto intervalo definido por la columna A. Por ejemplo, sume el valor en B entre A≥1 y A <3.
Estoy tratando de usar esto:
> sum(which(df$B[df$A>=1] & df$B[df$A<3]))
pero no me da lo que quiero.