R 输出中的 dist() 函数
dist() function in R outputs
我很好奇我得到的 dist() 输出结果。更具体地说,如果我尝试
a=matrix(rnorm(1:100),nrow=10)
dist(a)
好的,我得到了我所期望的
1 2 3 4 5 6 7 8 9
2 3.700582
3 3.793826 4.391523
4 3.063703 5.386797 5.494179
5 3.205545 4.464493 3.839944 3.763671
6 3.868796 4.954696 3.340530 5.165389 3.589912
7 3.906698 3.971069 3.405455 5.403859 4.284414 4.774963
8 2.620238 4.479064 5.403749 3.128820 4.237437 5.272889 5.551908
9 3.645784 4.586749 5.508289 3.333739 4.318391 6.113694 4.796519 3.641355
10 2.292591 4.152536 4.869231 3.445773 3.557222 3.992109 4.061925 3.740496 4.225799
很好,但是:当我有一个更大的矩阵时
dim(Large_m)
[1] 978 235
我试试
a=dist(Large_m)
我没有得到矩阵,而是 Rstudio 所说的 'Large dist' 对象。
与as.matrix
一起使用是否正确?
b=as.matrix(a)
b 正如我检查的那样确实是一个矩阵,看起来像距离矩阵。
此外,我真的需要距离矩阵中的行名,而不仅仅是数字,但以这种方式(使用 as.matrix
)我无法得到它。
似乎我遗漏了什么,在 R 中创建一个距离矩阵不会那么复杂。
这是@ColonelBeauvel 在评论中建议的明确示例。 (我认为由于评论中的错字造成了一些混乱:as.matrix() vs is.matrix()...)
大型随机矩阵:
cols <- 325
rows <- 978
m <- matrix(rnorm(1:(rows*cols)), ncol=cols)
让我们为行和列命名:
rownames(m) <- paste0("r", 1:rows)
colnames(m) <- paste0("c", 1:cols)
用dist
计算距离对象然后用as.matrix
将它变成一个正则矩阵(按照Beauvel上校的建议):
d <- dist(m)
dm <- as.matrix(d)
检查类型:
class(d)
[1] "dist"
class(dm)
[1] "matrix"
名称保留在距离矩阵 dm 中。这是它的一小部分:
dm[1:3,1:3]
r1 r2 r3
r1 0.00000 24.64059 26.63301
r2 24.64059 0.00000 25.69792
r3 26.63301 25.69792 0.00000
希望对您有所帮助。
我很好奇我得到的 dist() 输出结果。更具体地说,如果我尝试
a=matrix(rnorm(1:100),nrow=10)
dist(a)
好的,我得到了我所期望的
1 2 3 4 5 6 7 8 9
2 3.700582
3 3.793826 4.391523
4 3.063703 5.386797 5.494179
5 3.205545 4.464493 3.839944 3.763671
6 3.868796 4.954696 3.340530 5.165389 3.589912
7 3.906698 3.971069 3.405455 5.403859 4.284414 4.774963
8 2.620238 4.479064 5.403749 3.128820 4.237437 5.272889 5.551908
9 3.645784 4.586749 5.508289 3.333739 4.318391 6.113694 4.796519 3.641355
10 2.292591 4.152536 4.869231 3.445773 3.557222 3.992109 4.061925 3.740496 4.225799
很好,但是:当我有一个更大的矩阵时
dim(Large_m)
[1] 978 235
我试试
a=dist(Large_m)
我没有得到矩阵,而是 Rstudio 所说的 'Large dist' 对象。
与as.matrix
一起使用是否正确?
b=as.matrix(a)
b 正如我检查的那样确实是一个矩阵,看起来像距离矩阵。
此外,我真的需要距离矩阵中的行名,而不仅仅是数字,但以这种方式(使用 as.matrix
)我无法得到它。
似乎我遗漏了什么,在 R 中创建一个距离矩阵不会那么复杂。
这是@ColonelBeauvel 在评论中建议的明确示例。 (我认为由于评论中的错字造成了一些混乱:as.matrix() vs is.matrix()...)
大型随机矩阵:
cols <- 325
rows <- 978
m <- matrix(rnorm(1:(rows*cols)), ncol=cols)
让我们为行和列命名:
rownames(m) <- paste0("r", 1:rows)
colnames(m) <- paste0("c", 1:cols)
用dist
计算距离对象然后用as.matrix
将它变成一个正则矩阵(按照Beauvel上校的建议):
d <- dist(m)
dm <- as.matrix(d)
检查类型:
class(d)
[1] "dist"
class(dm)
[1] "matrix"
名称保留在距离矩阵 dm 中。这是它的一小部分:
dm[1:3,1:3]
r1 r2 r3
r1 0.00000 24.64059 26.63301
r2 24.64059 0.00000 25.69792
r3 26.63301 25.69792 0.00000
希望对您有所帮助。