Я использую ddply для агрегирования и суммирования переменных фрейма данных, и меня интересует цикл по списку моего фрейма данных для создания новых переменных.
new.data <- ddply(old.data,
c("factor", "factor2"),
function(df)
c(a11_a10 = CustomFunction(df$a11_a10),
a12_a11 = CustomFunction(df$a12_a11),
a13_a12 = CustomFunction(df$a13_a12),
...
...
...))
Есть ли способ вставить цикл в ddply, чтобы избежать записи каждой новой сводной переменной, например,
for (i in 11:n) {
paste("a", i, "_a", i - 1) = CustomFunction(..... )
}
Я знаю, что это не так, как было бы на самом деле, но я просто хотел показать, как я это концептуализирую. Есть ли способ сделать это в функции, которую я вызываю в ddply, или через список?
ОБНОВЛЕНИЕ: Поскольку я новый пользователь, я не могу опубликовать ответ на свой вопрос:
Мой ответ включает идеи из ответа Ника и комментария Исты:
func <- function(old.data, min, max, gap) {
varrange <- min:max
usenames <- paste("a", varrange, "_a", varrange - gap, sep="")
new.data <- ddply(old.data,
.(factor, factor2),
colwise(CustomFunction, c(usenames)))
}