我最近在r-help邮件列表上发布了这个问题,但没有得到答案,所以我想在这里发布一下,看看是否有任何建议。
我正在尝试计算矩阵的累积标准差。我想要一个接受矩阵并返回相同大小的矩阵的函数,其中输出单元格(i,j)设置为在第1行和第i行之间输入列j的标准差。除非输入矩阵本身的单元格(i,j)是NA,否则应忽略NAs,在这种情况下,输出矩阵的单元格(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
}
感谢您。