How can we resample only on the non-NA elements and get another matrix 10x10 with NA in lower ?
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
You can try this
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
Replace those values in your matrix that are not NA
, i.e. mymatrix[!is.na(mymatrix)]
by a sample
of the same values.