Итак, циклы for предельно просты.

v ‹- vector(length = length(object))
for(i in seq_along(object)) v[i] = sqrt(i)

Поэтому замените **sqrt** любым **f** и не беспокойтесь. Мы знаем, **как** это сделать.

За исключением, конечно, того, что *как* может не дать точно *того*, что мы хотим.

В течение последних нескольких недель мы с объектом 2e6x1e3 боролись за создание объекта 2e6x1e1 со сводной статистикой в ​​поддержку экологического временного ряда.

Моя трудность заключалась в том, что некоторые сводные статистические данные можно было вывести из объекта как *целого*, в то время как другие должны были быть получены построчно.

Это показалось хорошим поводом для data.table. Злой быстрый, subsetable и многое другое, чтобы любить. Но, в то время как любая отдельная строка объекта работала нормально с небольшой настройкой, цикл for постоянно давал сбои на том или ином шаге.

Мелькает внутренний тусклый свет: «Это все целые числа, зачем таблица данных?» Первый **какой** вопрос: является ли data.table правильным объектом? В конце концов, это **списки**. Вот как вы заставляете символы мирно сосуществовать с числами в одном объекте. Мой объект - все целые числа? Применяется Бритва Оккума. Работайте с матрицей, а не с таблицей данных, как бы прекрасно это ни было.

Итак, вернемся к моему f(x) = y. Мой *x* теперь является матричным объектом, и мой **y** может им быть, поскольку сводная статистика полностью числовая. Итак, инициализируйте **y**

M ‹- матрица (nrow = x, nrow = y)

где

x = dim(object)[1]
y = number_of_summary_statistics

создает матричный объект, заполненный `NA` достаточного размера для хранения результатов.

Чтобы заполнить N статистикой,

M[,1] = stat1(матрицаматрицаобъект)
M[,2] = stat2(объект)

где piece — это строка исходного объекта, а цикл добавления статистики по строкам выглядит так:

for(i в части) M[,3] = apply(piece,1,somefunction)

Или, если имеется более одной *somefunction*, просто поместите выражения `apply` в отдельный скрипт и используйте *source(script.R)
Как всегда, это просто вопрос

* Что у меня есть?
* Чего я хочу?
* Какая функция преобразует одно в другое?