我使用代理包计算了以下交叉距离矩阵,并希望将其用作矩阵对象。但是,crossdistance 属于“crossdist”类,并且使用 crossdistance <- as.matrix(crossdistance) 不会将其转换为矩阵,而是仍然属于“crossdist”类。欢迎任何评论:)
mat1 <- matrix(c(1,1,1,2,2,2),ncol=1)
mat2 <- matrix(c(1,2,2,2,3,3),ncol=1)
(crossdistance <- proxy::dist(mat1,mat2,type="euclidean"))
输出:
[,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")
答案 0 :(得分:1)
也许你可以试试
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 ...
答案 1 :(得分:1)
我们也可以使用 dim<-
crossdistance2 <- `dim<-`(c(crossdistance), dim(crossdistance))