相关疑难解决方法(0)

R - 如何从距离矩阵中获取匹配元素的行和列下标

我有一个整数向量vec1,我正在使用dist函数生成一个远程矩阵。我想获取距离矩阵中某个值的元素的坐标(行和列)。本质上,我想获得相距 d 距离的一对元素。例如:

vec1 <- c(2,3,6,12,17)
distMatrix <- dist(vec1)

#   1  2  3  4
#2  1         
#3  4  3      
#4 10  9  6   
#5 15 14 11  5
Run Code Online (Sandbox Code Playgroud)

说,我对向量中相距 5 个单位的一对元素感兴趣。我想得到坐标 1 是行和坐标 2 是距离矩阵的列。在这个玩具示例中,我希望

coord1  
# [1] 5
coord2
# [1] 4
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种有效的方法来获取这些值而不涉及将dist对象转换为矩阵或遍历矩阵?

r distance matrix euclidean-distance

6
推荐指数
1
解决办法
3895
查看次数

R:将矩阵的上三角部分转换为对称矩阵

我在R中没有矩阵的上三角形部分(没有对角线),并且想要从上三角形部分生成对称矩阵(在对角线上有1但可以稍后调整).我通常这样做:

res.upper <- rnorm(4950)
res <- matrix(0, 100, 100)
res[upper.tri(res)] <- res.upper
rm(res.upper)
diag(res) <- 1
res[lower.tri(res)]  <- t(res)[lower.tri(res)]
Run Code Online (Sandbox Code Playgroud)

这工作正常,但现在我想使用非常大的矩阵.因此,我希望避免同时存储res.upper和res(填充0).有没有什么方法可以直接将res.upper转换为对称矩阵而不必先初始化矩阵res?

r matrix

4
推荐指数
1
解决办法
2296
查看次数

使三角形(或通常是正方形)矩阵对称

我试图从R中的下三角矩阵创建一个对称矩阵.

在之前的Q&A(将矩阵的上三角部分转换为对称矩阵)中,用户李哲源表示,对于大型矩阵,这不应该在R中完成并且在C中提出了解决方案.但是我不理解C并且从来没有例如Rccp之前用过,所以不知道如何解释答案.然而很明显,那里的C代码会生成rnorm我不想要的随机数().我想放入一个方阵并得出一个对称矩阵.

对于A在其下三角形中具有数据的给定方阵,如何在C中有效地创建对称矩阵并在R中使用它?

c performance r matrix

3
推荐指数
1
解决办法
135
查看次数

标签 统计

matrix ×3

r ×3

c ×1

distance ×1

euclidean-distance ×1

performance ×1