R 从“类”转换交叉距离矩阵;“交叉区”;到矩阵

R 从“类”转换交叉距离矩阵;“交叉区”;到矩阵,r,class,matrix,distance,R,Class,Matrix,Distance,我使用代理包计算了以下交叉距离矩阵,并希望将其用作矩阵对象。然而,crossdistance属于“crossdist”类,使用crossdistance也许您可以尝试一下 crossdistance <- `attr<-`( as.matrix( as.data.frame.matrix(crossdistance) ), "dimnames", NULL ) 我们也可以使用dim谢谢!,工作完美,我将使用akrun answer,因为它比mic

我使用代理包计算了以下交叉距离矩阵,并希望将其用作矩阵对象。然而,crossdistance属于“crossdist”类,使用crossdistance也许您可以尝试一下

crossdistance <- `attr<-`(
  as.matrix(
    as.data.frame.matrix(crossdistance)
  ), "dimnames", NULL
)

我们也可以使用
dim谢谢!,工作完美,我将使用akrun answer,因为它比microbenchmark更短更快,但您的也可以:)
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    1    1    1    2    2
[2,]    0    1    1    1    2    2
[3,]    0    1    1    1    2    2
[4,]    1    0    0    0    1    1
[5,]    1    0    0    0    1    1
[6,]    1    0    0    0    1    1


str(crossdistance)
 'crossdist' num [1:6, 1:6] 0 0 0 1 1 1 1 1 1 0 ...
 - attr(*, "method")= chr "Euclidean"
 - attr(*, "call")= language proxy::dist(x = mat1, y = mat2, type = "euclidean")
crossdistance <- `attr<-`(
  as.matrix(
    as.data.frame.matrix(crossdistance)
  ), "dimnames", NULL
)
> crossdistance
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    1    1    1    2    2
[2,]    0    1    1    1    2    2
[3,]    0    1    1    1    2    2
[4,]    1    0    0    0    1    1
[5,]    1    0    0    0    1    1
[6,]    1    0    0    0    1    1

> str(crossdistance)
 num [1:6, 1:6] 0 0 0 1 1 1 1 1 1 0 ...
crossdistance2 <- `dim<-`(c(crossdistance), dim(crossdistance))