In the following example i am trying to replace some elements of a two columns matrix m using a two column matrix containing row and columns positions.
bbb
[,1] [,2] [1,] 21 1 [2,] 15 2 [3,] 16 2 [4,] 17 2 [5,] 18 2 [6,] 19 2 [7,] 20 2 [8,] 21 2 [9,] 22 2 [10,] 23 2 [11,] 24 2 [12,] 25 2 [13,] 26 2 [14,] 27 2 [15,] 13 3 m = matrix(nrow=30,ncol=4) > m[as.matrix(bbb)] = matrix(1:15,ncol=1) > sum(.is,na(m)) [1] 15 > > m[:1,3] [,1] [,2] [,3] [1,] NA NA NA [2,] NA NA NA [3,] NA NA NA [4,] NA NA NA [5,] NA NA NA [6,] NA NA NA [7,] NA NA NA [8,] NA NA NA [9,] NA NA NA [10,] NA NA NA [11,] NA NA NA [12,] NA NA NA [13,] NA 15 NA [14,] NA NA NA [15,] NA 2 NA [16,] NA 3 NA [17,] NA 4 NA [18,] NA 5 NA [19,] NA 6 NA [20,] NA 7 NA [21,] 1 8 NA [22,] NA 9 NA [23,] NA 10 NA [24,] NA 11 NA [25,] NA 12 NA [26,] NA 13 NA [27,] NA 14 NA [28,] NA NA NA [29,] NA NA NA [30,] NA NA NA
The last element that should be modified is at position (13,3), but instead, the modification is done at position (12,2) which does not appear in the positions matrix bbb. Any help?
The behavior is even weirder in the following example..
> bbb
[,1] [,2]
21 21 1
56 15 2
57 16 2
58 17 2
59 18 2
60 19 2
61 20 2
62 21 2
63 22 2
64 23 2
65 24 2
66 25 2
67 26 2
68 27 2
95 13 3
96 14 3
97 15 3
98 16 3
99 17 3
100 18 3
> m = matrix(nrow=30,ncol=4)
> m[as.matrix(bbb)] = 1:20
> sum(!is.na(m))
[1] 16
>
> m
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
[5,] NA NA NA NA
[6,] NA NA NA NA
[7,] NA NA NA NA
[8,] NA NA NA NA
[9,] NA NA NA NA
[10,] NA NA NA NA
[11,] NA NA NA NA
[12,] NA NA NA NA
[13,] NA 15 NA NA
[14,] NA 16 NA NA
[15,] NA 17 NA NA
[16,] NA 18 NA NA
[17,] NA 19 NA NA
[18,] NA 20 NA NA
[19,] NA 6 NA NA
[20,] NA 7 NA NA
[21,] 1 8 NA NA
[22,] NA 9 NA NA
[23,] NA 10 NA NA
[24,] NA 11 NA NA
[25,] NA 12 NA NA
[26,] NA 13 NA NA
[27,] NA 14 NA NA
[28,] NA NA NA NA
[29,] NA NA NA NA
[30,] NA NA NA NA
We need to use a vector
m[as.matrix(bbb)] <- 1:15
-output
> m
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
[5,] NA NA NA NA
[6,] NA NA NA NA
[7,] NA NA NA NA
[8,] NA NA NA NA
[9,] NA NA NA NA
[10,] NA NA NA NA
[11,] NA NA NA NA
[12,] NA NA NA NA
[13,] NA NA 15 NA
[14,] NA NA NA NA
[15,] NA 2 NA NA
[16,] NA 3 NA NA
[17,] NA 4 NA NA
[18,] NA 5 NA NA
[19,] NA 6 NA NA
[20,] NA 7 NA NA
[21,] 1 8 NA NA
[22,] NA 9 NA NA
[23,] NA 10 NA NA
[24,] NA 11 NA NA
[25,] NA 12 NA NA
[26,] NA 13 NA NA
[27,] NA 14 NA NA
[28,] NA NA NA NA
[29,] NA NA NA NA
[30,] NA NA NA NA
-second example
m2 <- matrix(nrow=30,ncol=4)
m2[as.matrix(bbb2)] = 1:20
output
> m2
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
[5,] NA NA NA NA
[6,] NA NA NA NA
[7,] NA NA NA NA
[8,] NA NA NA NA
[9,] NA NA NA NA
[10,] NA NA NA NA
[11,] NA NA NA NA
[12,] NA NA NA NA
[13,] NA NA 15 NA
[14,] NA NA 16 NA
[15,] NA 2 17 NA
[16,] NA 3 18 NA
[17,] NA 4 19 NA
[18,] NA 5 20 NA
[19,] NA 6 NA NA
[20,] NA 7 NA NA
[21,] 1 8 NA NA
[22,] NA 9 NA NA
[23,] NA 10 NA NA
[24,] NA 11 NA NA
[25,] NA 12 NA NA
[26,] NA 13 NA NA
[27,] NA 14 NA NA
[28,] NA NA NA NA
[29,] NA NA NA NA
[30,] NA NA NA NA
bbb <- structure(c(21, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 13, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3), .Dim = c(15L,
2L))
m <- matrix(nrow=30,ncol=4)
bbb2 <- structure(c(21L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L,
24L, 25L, 26L, 27L, 13L, 14L, 15L, 16L, 17L, 18L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L,
3L), .Dim = c(20L, 2L), .Dimnames = list(c("21", "56", "57",
"58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68",
"95", "96", "97", "98", "99", "100"), NULL))
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.