Повторная выборка не-NA в матрице - PullRequest
0 голосов
/ 18 мая 2018

Как мы можем выполнить повторную выборку только для не-NA элементов и получить еще одну матрицу 10x10 с NA ниже?

    mymatrix
            [,1]       [,2]       [,3]        [,4]        [,5]       [,6]          [,7]       [,8] [,9] [,10]
 [1,] -0.6068580 -0.8890714 -0.8088864 -0.37703190  0.97317259  1.6331389 -0.0003412596 -0.9642963  0    NA
 [2,]  2.4474819 -0.7655850  2.1295559  1.74173972  0.22162688 -1.0956214  1.3373400489  1.0344721   NA    NA
 [3,] -0.1344245 -0.2457321 -0.5196433 -0.19503708  1.01253271 -0.3426053 -1.1006913633         NA   NA    NA
 [4,] -0.4566595 -0.8942554  0.4021141 -1.43214088  0.00130944 -0.1228521            NA         NA   NA    NA
 [5,]  1.2089864  0.1007919  0.6669400 -0.01866827 -1.72585991         NA            NA         NA   NA    NA
 [6,]  0.3114062  0.4953031 -0.7354951  0.85718973          NA         NA            NA         NA   NA    NA
 [7,]  0.6323015  2.2380874 -0.6270626          NA          NA         NA            NA         NA   NA    NA
 [8,]  0.5002691  0.7062827         NA          NA          NA         NA            NA         NA   NA    NA
 [9,] -0.4541493         NA         NA          NA          NA         NA            NA         NA   NA    NA
[10,]         NA         NA         NA          NA          NA         NA            NA         NA   NA    NA

1 Ответ

0 голосов
/ 18 мая 2018

Вы можете попробовать это

mymatrix <- matrix(c(1:3, NA, 4:5, NA, NA, 6, NA, NA, NA, NA, NA, NA, NA), nrow = 4)
mymatrix
#     [,1] [,2] [,3] [,4]
#[1,]    1    4    6   NA
#[2,]    2    5   NA   NA
#[3,]    3   NA   NA   NA
#[4,]   NA   NA   NA   NA

set.seed(1)
mymatrix[!is.na(mymatrix)] <- sample(x = mymatrix[!is.na(mymatrix)],
                                     size = sum(!is.na(mymatrix)),
                                     replace = FALSE)
mymatrix
#     [,1] [,2] [,3] [,4]
#[1,]    2    4    5   NA
#[2,]    6    1   NA   NA
#[3,]    3   NA   NA   NA
#[4,]   NA   NA   NA   NA

Заменить те значения в вашей матрице, которые не являются NA, т.е. mymatrix[!is.na(mymatrix)], на sample тех же значений.

...