Базовый/общий класс в 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]
Между тем, следующие команды работают в некотором смысле, но не облегчают доступ к определенным значениям пары индексов/манипулируют ими:
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
Обходной путь, который я хочу избежать, - сначала преобразовать объект "dist"
в "matrix"
, обработать эту матрицу, а затем преобразовать обратно в "dist"
. То есть, это не вопрос о том, как преобразовать экземпляр "dist"
в "matrix"
, или какой-либо другой класс, в котором используются стандартные инструменты индексирования матриц уже определены; поскольку на этот вопрос был дан ответ несколькими способами в другом вопросе SO
Существуют ли инструменты в пакете stats
(или, возможно, некоторые другие базовые R-пакеты), предназначенные для индексирования/доступа к элементам экземпляра "dist"
?