我有一个整数向量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中没有矩阵的上三角形部分(没有对角线),并且想要从上三角形部分生成对称矩阵(在对角线上有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中的下三角矩阵创建一个对称矩阵.
在之前的Q&A(将矩阵的上三角部分转换为对称矩阵)中,用户李哲源表示,对于大型矩阵,这不应该在R中完成并且在C中提出了解决方案.但是我不理解C并且从来没有例如Rccp之前用过,所以不知道如何解释答案.然而很明显,那里的C代码会生成rnorm我不想要的随机数().我想放入一个方阵并得出一个对称矩阵.
对于A在其下三角形中具有数据的给定方阵,如何在C中有效地创建对称矩阵并在R中使用它?