[英]Replacing elemnts of an R matrix using a location matrix in R
在下面的示例中,我嘗試使用包含行和列位置的兩列矩陣替換兩列矩陣 m 的某些元素。
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
應修改的最后一個元素位於 position (13,3),但修改是在 position (12,2) 處完成的,它沒有出現在位置矩陣 bbb 中。 有什么幫助嗎?
在下面的示例中,行為甚至更奇怪。
> 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
我們需要使用vector
m[as.matrix(bbb)] <- 1:15
-輸出
> 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
- 第二個例子
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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.