Как манипулировать/получать доступ к элементам экземпляра класса «dist» с помощью ядра R?

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

20
задан Community 23 May 2017 в 12:08
поделиться