簡體   English   中英

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說,我沒有得到矩陣,而是一個“大型”對象。

如果我和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

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM