请考虑下面的例子
before = matrix(c(1, 2, 3, NA, 4, 5, NA, NA, 1), ncol = 3)
after = matrix(c(1, 2, 3, 1, 4, 5, 1, 4, 1), ncol = 3)
前面的矩阵是我总是根据缺失值的位置来处理的那种矩阵,而后面的矩阵是我需要重复获得的矩阵. 有没有什么有效的套路?
请考虑下面的例子
before = matrix(c(1, 2, 3, NA, 4, 5, NA, NA, 1), ncol = 3)
after = matrix(c(1, 2, 3, 1, 4, 5, 1, 4, 1), ncol = 3)
前面的矩阵是我总是根据缺失值的位置来处理的那种矩阵,而后面的矩阵是我需要重复获得的矩阵. 有没有什么有效的套路?
您可以按行方式应用{zoo}
中的na.locf()
(MARGIN = 1L
):
> before = matrix(c(1, 2, 3, NA, 4, 5, NA, NA, 1), ncol = 3)
> after = matrix(c(1, 2, 3, 1, 4, 5, 1, 4, 1), ncol = 3)
> (before2 = t(apply(before, 1L, zoo::na.locf)))
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 4 4
[3,] 3 5 1
> identical(before2, after)
[1] TRUE
请阅读文档,其中包含大量实现的选项. 或编写您自己的函数,请参见here.