R中的基本/公共类被称为"dist"
,并且是对称距离矩阵的相对有效的表示."matrix"
但是,与对象不同,似乎不支持"dist"
使用"["
运算符通过索引对操作实例.
例如,以下代码不返回任何内容NULL
,或错误:
# First, create an example dist object from a matrix
mat1 <- matrix(1:100, 10, 10)
rownames(mat1) <- 1:10
colnames(mat1) <- 1:10
dist1 <- as.dist(mat1)
# Now try to access index features, or index values
names(dist1)
rownames(dist1)
row.names(dist1)
colnames(dist1)
col.names(dist1)
dist1[1, 2]
Run Code Online (Sandbox Code Playgroud)
同时,在某种意义上,以下命令可以正常工作,但不要使访问/操作特定索引对值更容易:
dist1[1] # R thinks of it as a vector, not a matrix?
attributes(dist1)
attributes(dist1)$Diag <- FALSE
mat2 <- as(dist1, "matrix")
mat2[1, 2] <- 0
Run Code Online (Sandbox Code Playgroud)
一个解决方法 - …
我有一个整数向量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
对象转换为矩阵或遍历矩阵?