簡體   English   中英

使用 R 中的位置矩陣替換 R 矩陣的元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM