当前位置: 首页 > 知识库问答 >
问题:

填充R中距离矩阵中缺少的行/列

云育
2023-03-14

我有两个距离矩阵..但是它们中的任何一个都可能缺少项目,并且它们可能处于无序状态--例如:

矩阵#1(缺少c项)

  a b d 
a 0 2 3 
b 2 0 4 
d 3 4 0 
  d c a
d 0 1 2 
c 1 0 1 
a 2 1 0 
  a b c d
a 0 2 1 1
b 2 0 0 4
c 1 0 0 1
d 1 4 1 0

共有1个答案

辛才俊
2023-03-14

我们创建一个名称索引('un1'),它是第一个('m1')和第二个('m2')矩阵名称的联合。两个新的0矩阵('M1N'、'M2N')是通过基于'UN1'指定维度和dim名称来创建的。通过行/列索引,我们将这些矩阵中的0值更改为'm1'、'm2'中的值,减去并得到绝对值。

Un1 <- sort(union(colnames(m1), colnames(m2)))
m1N <- matrix(0, ncol=length(Un1), nrow=length(Un1), dimnames=list(Un1, Un1))
m2N <- m1N
m1N[rownames(m1), colnames(m1)] <- m1
m2N[rownames(m2), colnames(m2)] <- m2
abs(m1N-m2N)
#  a b c d
#a 0 2 1 1
#b 2 0 0 4
#c 1 0 0 1
#d 1 4 1 0

如果我们有几个对象名m后面跟着数字的矩阵,我们可以将它们放在列表中。我们使用ls获取对象名称,并使用mget获取列表中的值。使用lapply循环列表以获取列名,在reduce中使用unione作为fsort以获取unique元素。

lst <- mget(ls(pattern='m\\d+')) #change the pattern accordingly
Un1 <- sort(Reduce(union, lapply(lst, colnames)))

我们可以用矩阵创建另一个列表

lst1 <- lapply(seq_along(lst), function(i) 
    matrix(0, ncol=length(Un1), nrow=length(Un1), dimnames=list(Un1, Un1)))

我们可以使用map使用“lst”对应矩阵的行/列索引来更改“lst1”的对应元素。

lst2 <- Map(function(x,y) {x[rownames(y), colnames(y)] <- y; x}, lst1, lst)

如果我们需要成对的差异,combn可能是一个选项

lst3 <- combn(seq_along(lst2),2, FUN=function(x) 
                      list(abs(lst2[[x[1]]]-lst2[[x[2]]])))
names(lst3) <- combn(seq_along(lst2), 2, FUN=paste, collapse='_')
 类似资料:
  • 最后,我们准备把数据从文件读入一个矩阵中。具体来说,每个城市在该矩阵中都一个相应的行和列。 我们将在main函数中创建该矩阵,它会剩余大量空间: apmatrix<int> distances (50, 50, 0); 在processLine内部,我们从Set中得到两个城市的索引,并以这两个索引为矩阵的索引,向矩阵中添加了新信息: int dist = convertToInt (distSt

  • 我有两个特征矩阵,它们的行数不同。假设矩阵A比矩阵B有更多的行。矩阵的列包括ID1、ID2、时间片、特征值。由于B中有一段时间没有特征值,因此B中的行数小于A。我需要找到B中缺少的行。然后将具有相关ID1、ID2值的行添加到B中,并且特征为零。

  • 问题内容: 我目前正在将数据读入如下所示的数据框中。 我想根据此数据创建一个欧几里得距离矩阵,该矩阵显示所有城市对之间的距离,因此我得到一个结果矩阵,如下所示: 我的实际数据框中还有更多城市和坐标,因此我需要能够以某种方式遍历所有城市对并创建一个距离矩阵,就像上面显示的那样,但是我不确定如何配对所有城市一起引用并应用欧几里德距离公式?任何帮助,将不胜感激。 问题答案: 我认为您对distance_

  • 问题内容: 我有一个距离矩阵N * N ,其中是之间的距离和。因此,正如预期的那样,它采用以下形式: 现在,我希望通过分层聚类将这n个对象聚类。Python有一个称为的实现。 它的文档说: y必须是{n \ choose 2}大小的向量,其中n是距离矩阵中成对的原始观测数。 y:ndarray 压缩或冗余距离矩阵。压缩距离矩阵是包含距离矩阵上三角的平面阵列。这是pdist返回的形式。替代地,可以将

  • 我需要计算存储在csr稀疏矩阵和一些点列表中的所有点之间的欧氏距离。对我来说,将csr转换为稠密的csr会更容易,但由于内存不足,我无法将其转换为稠密的csr,因此我需要将其保留为csr。 例如,我有一个数据\u csr稀疏矩阵(csr和稠密视图): 这个中心点列表: 使用包,data_csr和中心之间的欧几里德距离数组将像下面这样。因此,在center的每行中,总共6个点中的每一个点都是根据da

  • 本文向大家介绍求mk矩阵A和nk矩阵的欧几里得距离?相关面试题,主要包含被问及求mk矩阵A和nk矩阵的欧几里得距离?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 先得到矩阵,然后对矩阵A和矩阵分别求出其中每个向量的模平方,并扩展为两个m*k的矩阵和。最终求得新的矩阵,并将此矩阵开平方得到A,B向量集的欧几里得距离。

  • 我正在使用pdfbox-1.8.12从PDF中读取内容以获取XFA。我已经能够成功地为大多数文件获取XFA,而没有遗漏任何字段值。 问题在于一些文件,如错误。pdf。我有许多字段没有像CIN这样的值,但当我在任何PDF查看器、foxit或Acrobat中打开文件时,它会显示该字段。 然后将字节[]转换为字符串。 这是此文件的xfa,如果您在此搜索“U72300DL1996PLC075672”,它将

  • 我正在尝试使用SpringMVC(来自Spring boot 1.2.3.Release)向我的Rest控制器添加一个矩阵参数(或矩阵变量),下面是我的代码: 这就是我得到的答案: 出现错误(类型=错误请求,状态=400)。 String类型的方法参数缺少矩阵变量“agent name” 我做错了什么?根据http://docs.spring.io/spring-framework/docs/3.