在R中,考虑到通用矩阵A,如何将三角形NA移动到矩阵B中的位置?矩阵是m x n怎么样? A - matrix(c(3, NA, NA, 4, 2, NA, 1, 5, 3), nrow = 3) A [,1] [,2] [,3][1,] 3 4 1[2,] NA 2 5[3,] NA NA 3 B - matrix(c(3, 2, 3, 4, 5,
> A <- matrix(c(3, NA, NA, 4, 2, NA, 1, 5, 3), nrow = 3) > A [,1] [,2] [,3] [1,] 3 4 1 [2,] NA 2 5 [3,] NA NA 3 > B <- matrix(c(3, 2, 3, 4, 5, NA, 1, NA, NA), nrow = 3) > B [,1] [,2] [,3] [1,] 3 4 1 [2,] 2 5 NA [3,] 3 NA NA
谢谢!
我不知道是否有更惯用的方式,但这似乎做你想要的:A <- matrix(c(3, NA, NA, 4, 2, NA, 1, 5, 3), nrow = 3) A [,1] [,2] [,3] [1,] 3 4 1 [2,] NA 2 5 [3,] NA NA 3 t(apply(A, 1, function(x) x[order(is.na(x))])) [,1] [,2] [,3] [1,] 3 4 1 [2,] 2 5 NA [3,] 3 NA NA A <- matrix(c(3, NA, NA, NA, 4, 2, NA, NA, 1, 5, 3, NA), nrow=4) A [,1] [,2] [,3] [1,] 3 4 1 [2,] NA 2 5 [3,] NA NA 3 [4,] NA NA NA t(apply(A, 1, function(x) x[order(is.na(x))])) [,1] [,2] [,3] [1,] 3 4 1 [2,] 2 5 NA [3,] 3 NA NA [4,] NA NA NA A <- matrix(c(3, NA, NA, 4, 2, NA, 1, 5, 3, 6, 7, 8), nrow=3) A [,1] [,2] [,3] [,4] [1,] 3 4 1 6 [2,] NA 2 5 7 [3,] NA NA 3 8 t(apply(A, 1, function(x) x[order(is.na(x))])) [,1] [,2] [,3] [,4] [1,] 3 4 1 6 [2,] 2 5 7 NA [3,] 3 8 NA NA