我有一个COO (Coordinate list)格式的方阵。
例如:
From To Value
1 1 1
1 2 1
2 1 0
2 2 1
我想将其转换为常规的R矩阵格式。 所以它看起来像这样:
[,1] [,2]
[1,] 1 1
[2,] 0 1
请告知如何操作。
答案 0 :(得分:0)
这是我发现的一种方式:
使用Matrix包。
首先,示例中的表格为:
> coo_mat <- rbind(c(1,1,1), c(1,2,1), c(2,1,0), c(2,2,1))
> coo_mat
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 2 1
[3,] 2 1 0
[4,] 2 2 1
现在,使其成为常规格式矩阵:
> as.matrix(Matrix::sparseMatrix(i=coo_mat[,1], j=coo_mat[,2], x=coo_mat[,3]))
[,1] [,2]
[1,] 1 1
[2,] 0 1
答案 1 :(得分:0)
您可以使用基准R中的xtabs
执行此操作,如下所示:
out <- xtabs(coo_mat[, 3] ~ coo_mat[, 1] + coo_mat[, 2])
out
# coo_mat[, 2]
# coo_mat[, 1] 1 2
# 1 1 1
# 2 0 1
结果是类&#34; xtabs&#34;的对象。和&#34;表&#34;。
class(out)
# [1] "xtabs" "table"
如果您想摆脱dimnames
和其他attributes
,您可以执行以下操作:
`dim<-`(`attributes<-`(out, NULL), dim(out))
# [,1] [,2]
# [1,] 1 1
# [2,] 0 1