查找 2 个矩阵之间的对应值

阿维

我有两个矩阵:

矩阵 - test_nodes

head (test_nodes)

   1  2  3  4  5  6  7  8  9 10
1  9 17 32 35 20 35 41 40  9 48
2  9 14  8  8 16 16 14 13  4  9
3 24 17 21 35 20 35 33 48  9 48
4  9 14  8  8 16 16 14 13  4  9
5  9 30  8  8 16 16 14 20  4  9
6 42 38  6 12 50 13 36 44 51 13

矩阵 - NAMETRANS

head (NAMETRANS)

   [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 6    5    4    8    8    8    4    5    4    8    
[2,] 8    8    6    11   14   13   10   6    9    9    
[3,] 9    13   8    12   16   16   12   12   11   10   
[4,] 12   14   15   14   18   23   14   13   14   13   
[5,] 17   16   21   16   19   26   17   17   18   16   
[6,] 20   17   22   17   20   28   18   18   19   20 


> NAMETRANS
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,] 6    5    4    8    8    8    4    5    4    8    
 [2,] 8    8    6    11   14   13   10   6    9    9    
 [3,] 9    13   8    12   16   16   12   12   11   10   
 [4,] 12   14   15   14   18   23   14   13   14   13   
 [5,] 17   16   21   16   19   26   17   17   18   16   
 [6,] 20   17   22   17   20   28   18   18   19   20   
 [7,] 21   20   23   18   21   29   19   20   20   22   
 [8,] 22   23   25   24   22   30   23   21   21   25   
 [9,] 23   25   29   26   23   31   24   22   23   27   
[10,] 24   26   30   28   24   32   27   24   24   28   
[11,] 30   28   31   32   27   33   30   26   28   29   
[12,] 32   30   32   34   29   35   32   28   32   31   
[13,] 35   31   33   35   31   36   33   32   34   32   
[14,] 36   33   35   37   32   37   35   33   36   34   
[15,] 38   36   37   38   34   38   36   34   37   36   
[16,] 40   37   40   39   37   41   38   39   39   37   
[17,] 41   38   41   40   39   42   41   40   42   38   
[18,] 42   40   42   41   44   43   42   43   43   41   
[19,] 44   41   43   43   45   45   44   44   44   43   
[20,] 46   42   45   44   46   46   45   45   45   45   
[21,] 47   43   46   46   47   47   46   46   46   48   
[22,] 48   44   48   47   48   48   48   48   47   49   
[23,] 49   46   50   49   49   49   49   50   48   51   
[24,] 50   47   51   50   50   50   50   51   49   52   
[25,] 51   NULL 52   51   53   51   51   52   51   53   
[26,] 53   NULL 53   52   54   52   52   53   52   54   
[27,] 55   NULL 54   55   55   53   53   54   54   55   
[28,] 56   NULL 57   56   57   NULL NULL 55   56   56   
[29,] 58   NULL 58   57   58   NULL NULL NULL 57   57   
[30,] 59   NULL 59   NULL 59   NULL NULL NULL NULL NULL 

我想创建第三个矩阵TRANSNAMESNAMETRANS 将遍历中的每一列,test_nodes并将单元格中的值替换为相关列中行号的值。例如,对于91在 test_nodes值,并且是行号 3 inNAMETRANS因此它将获得值 3 in TRANSNAMES

TRANSNAMES [1,1] = 3
TRANSNAMES [2,1] = 3 

(也9)等。

Here is the result, something is wrong:
> transnames
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,] 3    NULL 12   NULL 6    NULL NULL NULL NULL NULL 
 [2,] 3    NULL 3    NULL 3    NULL NULL NULL NULL NULL 
 [3,] 10   NULL 5    NULL 6    NULL NULL NULL NULL NULL 
 [4,] 3    NULL 3    NULL 3    NULL NULL NULL NULL NULL 
 [5,] 3    NULL 3    NULL 3    NULL NULL NULL NULL NULL 
 [6,] 18   NULL 2    NULL 24   NULL NULL NULL NULL NULL 
 [7,] 24   NULL 8    NULL 24   NULL NULL NULL NULL NULL 
 [8,] 10   NULL 5    NULL 15   NULL NULL NULL NULL NULL 
 [9,] 19   NULL 8    NULL 24   NULL NULL NULL NULL NULL 
[10,] 10   NULL 5    NULL 6    NULL NULL NULL NULL NULL 
[11,] 3    NULL 16   NULL 6    NULL NULL NULL NULL NULL 
[12,] 10   NULL 5    NULL 6    NULL NULL NULL NULL NULL 
[13,] 12   NULL 18   NULL 10   NULL NULL NULL NULL NULL
>dput(test_nodes)
...
  c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")))
   1  2  3  4  5  6  7  8  9 10
1  9 17 32 35 20 35 41 40  9 48
2  9 14  8  8 16 16 14 13  4  9
3 24 17 21 35 20 35 33 48  9 48
4  9 14  8  8 16 16 14 13  4  9
5  9 30  8  8 16 16 14 20  4  9
6 42 38  6 12 50 13 36 44 51 13

>

 dput(NAMETRANS)
structure(list(6, 8, 9, 12, 17, 20, 21, 22, 23, 24, 30, 32, 35, 
    36, 38, 40, 41, 42, 44, 46, 47, 48, 49, 50, 51, 53, 55, 56, 
    58, 59, 5, 8, 13, 14, 16, 17, 20, 23, 25, 26, 28, 30, 31, 
    33, 36, 37, 38, 40, 41, 42, 43, 44, 46, 47, NULL, NULL, NULL, 
    NULL, NULL, NULL, 4, 6, 8, 15, 21, 22, 23, 25, 29, 30, 31, 
    32, 33, 35, 37, 40, 41, 42, 43, 45, 46, 48, 50, 51, 52, 53, 
    54, 57, 58, 59, 8, 11, 12, 14, 16, 17, 18, 24, 26, 28, 32, 
    34, 35, 37, 38, 39, 40, 41, 43, 44, 46, 47, 49, 50, 51, 52, 
    55, 56, 57, NULL, 8, 14, 16, 18, 19, 20, 21, 22, 23, 24, 
    27, 29, 31, 32, 34, 37, 39, 44, 45, 46, 47, 48, 49, 50, 53, 
    54, 55, 57, 58, 59, 8, 13, 16, 23, 26, 28, 29, 30, 31, 32, 
    33, 35, 36, 37, 38, 41, 42, 43, 45, 46, 47, 48, 49, 50, 51, 
    52, 53, NULL, NULL, NULL, 4, 10, 12, 14, 17, 18, 19, 23, 
    24, 27, 30, 32, 33, 35, 36, 38, 41, 42, 44, 45, 46, 48, 49, 
    50, 51, 52, 53, NULL, NULL, NULL, 5, 6, 12, 13, 17, 18, 20, 
    21, 22, 24, 26, 28, 32, 33, 34, 39, 40, 43, 44, 45, 46, 48, 
    50, 51, 52, 53, 54, 55, NULL, NULL, 4, 9, 11, 14, 18, 19, 
    20, 21, 23, 24, 28, 32, 34, 36, 37, 39, 42, 43, 44, 45, 46, 
    47, 48, 49, 51, 52, 54, 56, 57, NULL, 8, 9, 10, 13, 16, 20, 
    22, 25, 27, 28, 29, 31, 32, 34, 36, 37, 38, 41, 43, 45, 48, 
    49, 51, 52, 53, 54, 55, 56, 57, NULL), .Dim = c(30L, 10L))
Ben

这应该在base

for(j in 1:ncol(transnames)){
  for(i in 1:nrow(transnames)){
    tryCatch(transnames[i,j] <- which(nametrans[,j]==test_nodes[i,j]),
             error = function(e) return(NA))
  }
}
> transnames
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    3    6   NA   NA    6   NA   NA   NA    2    NA
[2,]    3    4    3    1    3    3    4    4    1     2
[3,]   NA    6    5   NA    6   NA   NA   NA    2    NA
[4,]    3    4    3    1    3    3    4    4    1     2
[5,]    3   NA    3    1    3    3    4   NA    1     2
[6,]   NA   NA    2    3   NA    2   NA   NA   NA     4

正如989已经提到的,如果在 nametrans 的相应列中找不到该值,则您没有提供有关矩阵应包含什么的信息,因此此循环仅返回NA这些值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找2个坐标数组之间的对应关系

来自分类Dev

在两个矩阵之间查找值

来自分类Dev

在两个矩阵之间查找值

来自分类Dev

在2个特定值之间的列中查找值数

来自分类Dev

在2个Excel列之间查找唯一值

来自分类Dev

递归函数查找2个整数之间的最大值

来自分类Dev

查找2个熊猫之间的值,如果找到,则进行计算

来自分类Dev

如何创建一个Excel公式来查找矩阵中给定值的对应范围?

来自分类Dev

Python查找2个日期之间的月数

来自分类Dev

查找2个日期之间的文件

来自分类Dev

在2个连续数字之间查找(regEx)

来自分类Dev

在三个2d子矩阵中逐元素查找最小值

来自分类Dev

在2个HashMaps中查找不同的值

来自分类Dev

查找仅存在2个值的记录

来自分类Dev

查找2个字符串之间的字符串值

来自分类Dev

查找2组向量之间的最小值(最快的方法)

来自分类Dev

在 2 个数组之间查找匹配值的字典替代方法

来自分类Dev

使用BFS查找2个节点之间的最短路径

来自分类Dev

查找2个摄像机之间的相对位置

来自分类Dev

查找2个csv文件之间的匹配和分数

来自分类Dev

查找2个日期之间的星期一

来自分类Dev

在.NET Core中查找2个坐标之间的距离

来自分类Dev

PHP-如何查找日期是否在2个日期之间

来自分类Dev

使用BFS查找2个节点之间的最短路径

来自分类Dev

查找2个大表之间的重复项

来自分类Dev

python查找2个定界符之间的多次出现

来自分类Dev

PostgreSQL查找2个或多个日期之间的平均时间

来自分类Dev

PHP-查找2个Unicode字符之间的数字

来自分类Dev

MySQL查询以查找2个表之间的匹配项