Я недавно разместил этот вопрос в списке рассылки r-help, но не получил ответов, поэтому я решил опубликовать его и здесь и посмотреть, есть ли какие-либо предложения.
Я пытаюсь вычислить совокупное стандартное отклонение матрицы. Я хочу функцию, которая принимает матрицу и возвращает матрицу того же размера, где выходная ячейка (i, j) установлена на стандартное отклонение входного столбца j между строками 1 и i. NA следует игнорировать, если только ячейка (i, j) входной матрицы не является NA, и в этом случае ячейка (i, j) выходной матрицы также должна быть NA.
Мне не удалось найти встроенную функцию, поэтому я реализовал следующий код. К сожалению, для этого используется цикл, который оказывается несколько медленным для больших матриц. Есть ли более быстрая встроенная функция или кто-то может предложить лучший подход?
cumsd <- function(mat)
{
retval <- mat*NA
for (i in 2:nrow(mat)) retval[i,] <- sd(mat[1:i,], na.rm=T)
retval[is.na(mat)] <- NA
retval
}
Спасибо.