На самом деле вы можете просто создать новые столбцы, указав новые имена столбцов и присвоив им значение:
my.data <- data.frame("var1" = 1:10, "var2" = 11:20)
months <- c("January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December")
my.data[, months] <- 0
Затем вы можете заполнить столбцы в цикле for, который будет работать как data.frame.уже имеет правильный размер.
Редактировать
В соответствии с запросом, если вы хотите, чтобы месяцы превышали несколько лет, я бы сначала построил имена столбцов:
years <- 2015:2018
monyear <- as.character(t(sapply(months, paste0, years)))
my.data[, monyear] <- 0
Маленький sidenote: month.name
уже встроен в R
, и вам не нужно его определять.