如何在R中将稀疏矩阵转换为密集矩阵

时间:2017-12-26 03:01:43

标签: r matrix

我认为这是关于R.的基本问题 我有一个3列的数据框,其中前两列分别代表行和colunm索引,最后一列是值。简单地说,数据是稀疏矩阵格式。我想将其转换为标准矩阵格式。我该怎么办?代码 mat[data[,1],data[,2]]=data[,3]不对。

1 个答案:

答案 0 :(得分:1)

class data.frame class矩阵中的列'{1}}和data'. Assuming that 'data' is and 'mat' is a不清楚

mat[as.matrix(data[1:2]) <- data[,3]

或者

mat[cbind(data[,1], data[,2])] <- data[,3]

OP的帖子中的方法导致分配的LHS

mat[data[,1], data[,2]]
#      [,1] [,2] [,3]
#[1,]    0    0    0
#[2,]    0    0    0
#[3,]    0    0    0

通过使用matrixas.matrix转换为cbind进行索引,在<-的LHS和RHS上提供相同数量的元素

mat[as.matrix(data[1:2])]
#[1] 0 0 0

数据

mat <- matrix(0, 5, 5)
data <- data.frame(row = c(1, 1, 3), col = c(2, 5, 1), 
     value = c(20, 15, 12))