簡體   English   中英

在R中一次替換矩陣中的多個值

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

aNA

      [,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.

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