首页 文章

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

提问于
浏览
1

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

1 回答

  • 1

    目前还不清楚 data'. Assuming that 'data' is data.frame and 'mat' is a 矩阵中'mat'和 class 列的 class

    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
    

    通过转换为带有 as.matrixcbindmatrix 的索引,在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))
    

相关问题