[英]Replacing multiple values in matrix at once in R
我有一個很大的偏好矩陣P,其中包含100多個患者行和100多個腎臟偏好列。 我必須以某種方式將這些腎臟分配給患者。 在找到分配的第一個子集之后,我想1.從考慮的患者中刪除患者,並2.替換在偏好矩陣中分配給NA的腎臟。 我多次循環執行此過程。 我知道該怎么做。但是當我嘗試做2.時,我想更改為NA的數字實際上只有少數改變。
完成循環后,我將得到一個腎臟分配向量,如下所示:
taken= c(94, 42, 72, 12, 45, 68, 10, 100, 98)
然后,我嘗試使用以下命令將這些優先級矩陣P中的數字替換為NA:
P[P==taken]=NA
但是我仍然在矩陣中看到一些嘗試替換的值。 有什么建議嗎?
我們可以使用apply
:
a=matrix(92:100,nrow = 3,ncol = 3)
taken= c(94, 42, 72, 12, 45, 68, 10, 100, 98)
a
NA
前
[,1] [,2] [,3]
[1,] 92 95 98
[2,] 93 96 99
[3,] 94 97 100
a[apply(a,1,function(x) (x%in%taken))]=NA
a
后NA
[,1] [,2] [,3]
[1,] 92 95 NA
[2,] 93 96 99
[3,] NA 97 NA
不確定我是否理解這個問題,但這可能會回答它。
# Generate preference matrix
P <- matrix(1:100,nrow = 10)
P
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] 1 11 21 31 41 51 61 71 81 91
#> [2,] 2 12 22 32 42 52 62 72 82 92
#> [3,] 3 13 23 33 43 53 63 73 83 93
#> [4,] 4 14 24 34 44 54 64 74 84 94
#> [5,] 5 15 25 35 45 55 65 75 85 95
#> [6,] 6 16 26 36 46 56 66 76 86 96
#> [7,] 7 17 27 37 47 57 67 77 87 97
#> [8,] 8 18 28 38 48 58 68 78 88 98
#> [9,] 9 19 29 39 49 59 69 79 89 99
#> [10,] 10 20 30 40 50 60 70 80 90 100
# Removed for example with smaller matrix
taken= c(1,2,5, 10)
# Set taken rows to NA
P[taken,1:dim(P)[2]] = NA
P
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] NA NA NA NA NA NA NA NA NA NA
#> [2,] NA NA NA NA NA NA NA NA NA NA
#> [3,] 3 13 23 33 43 53 63 73 83 93
#> [4,] 4 14 24 34 44 54 64 74 84 94
#> [5,] NA NA NA NA NA NA NA NA NA NA
#> [6,] 6 16 26 36 46 56 66 76 86 96
#> [7,] 7 17 27 37 47 57 67 77 87 97
#> [8,] 8 18 28 38 48 58 68 78 88 98
#> [9,] 9 19 29 39 49 59 69 79 89 99
#> [10,] NA NA NA NA NA NA NA NA NA NA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.