Базовый/общий класс в 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"
?