David, desculpe a demora em responder.
O que ocorre é que a função as.Date armazena o objeto o qual foi passado para ela com um número.
Ela apenas "mostra" como data, com referência a uma data inicial qualquer (por default 01/01/1970).
Quando você usa essas datas (armazenadas como número) no for com o operador in, elas de fato viram números.
Tem algumas formas de contornar isso, a que eu te mandei é a que me pareceu mexer menos na lógica do seu script.
Você poderia, por exemplo, aplicar novamente a função as.Data dentro do for.
Substituir format(dia, format = "%Y-%m-%d") por as.Date(dia, origin = "1970-01-01")
Um abraço.