R'de bir temel/ortak sınıf "dist"
olarak adlandırılır ve simetrik bir uzaklık matrisinin nispeten verimli bir temsilidir. Bununla birlikte, "matrix"
nesnesinin aksine,örneğinin "["
işlecini kullanarak dizin çiftleri tarafından işlenmesi için destek görünmemektedir./Özellikle işlemek, aşağıdaki komutlar bir anlamda, işi, ancak erişim için hiç kolay yapmazlar aradaÇekirdek R? Kullanarak bir "dist" sınıfı örneğinin öğelerini nasıl kullanabilirim/erişebilirim?
# 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]
:
Örneğin, aşağıdaki kod şey, NULL
veya bir hata döndürür indeks-pair değerler:
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
bir geçici çözüm - Ben önlemek istiyorum - öncelikle bir "matrix"
için "dist"
nesneyi dönüştürdüğünü matrisi işlemek ve sonrageri dönüştürmek olduğunu 10 Bu, question about how to convert a "dist"
örneğinin bir "matrix"
örneğine veya ortak matris indeksleme araçlarının zaten tanımlandığı başka bir sınıf olmadığı anlamına da gelir; Bu bir different SO question
çeşitli şekillerde cevap beri stats
pakette araçlar var mı (ya da belki başka bir çekirdek R paketi) adanmış indeksleme/"dist"
örneği unsurlarını erişen?
İyi S: Sizin için bir cevabınız yok, ancak R'de bir matrisin sadece boyutları olan bir vektör olduğunu unutmayın. Bu yüzden, 'dist1 [1:20] 've' dist1 [5] <- 100' ve benzeri işler düzgün değildir. Küçük bir sorunla, atomlara aşinam sınırlı olsa da, muhtemelen iki boyutlu bir versiyon yazabilirsin. –