我有一个大的偏好矩阵P,其中包含100多个患者行和100多个肾脏偏好列。我必须以某种方式将这些肾脏分配给患者。在找到分配的第一个子集之后,我想1.从考虑的患者中删除患者,并2.替换在偏好矩阵中分配给NA的肾脏。我多次循环执行此过程。我知道该怎么做。但是当我尝试做2.时,我想更改为NA的数字实际上只有少数改变。
完成循环后,我将得到一个肾脏分配向量,如下所示:
import { HashRouter } from 'react-router-dom'
ReactDOM.render((
<HashRouter>
<App />
</HashRouter>
), holder)
然后我尝试通过以下方式用NA替换优先矩阵P中的这些数字:
taken= c(94, 42, 72, 12, 45, 68, 10, 100, 98)
但是我仍然在矩阵中看到一些尝试替换的值。有什么建议吗?
答案 0 :(得分:0)
我们可以使用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
答案 1 :(得分:0)
不确定我是否理解这个问题,但这可能会回答它。
# 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