R:将行/列索引的数据框转换为矩阵

HOS*_*JFL 2 r matrix dataframe

我想像这样改造一个物体

df <- data.frame(ROW = c(1,3),COLUMN =c(2,3),VALUE = c(10,20))
df
ROW COLUMN VALUE 
1        2    10
3        3    20
Run Code Online (Sandbox Code Playgroud)

到这样的矩阵

m <-matrix(c(0,10,0,0,0,0,0,0,20),ncol = 3,nrow = 3)
m
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]   10    0    0
[3,]    0    0   20
Run Code Online (Sandbox Code Playgroud)

我知道数据框代表一个稀疏矩阵,但我没有找到与我正在寻找的内容完全相关的任何其他问题。

akr*_*run 5

我们可以用sparseMatrix

library(Matrix)
as.matrix( sparseMatrix(i = df$COLUMN, j= df$ROW, x= df$VALUE))
#      [,1] [,2] [,3]
#[1,]    0    0    0
#[2,]   10    0    0
#[3,]    0    0   20
Run Code Online (Sandbox Code Playgroud)

或者创建一个matrix0 然后赋值

m1 <- matrix(0, 3, 3)
m1[as.matrix(df[2:1])] <- df$VALUE
Run Code Online (Sandbox Code Playgroud)

注意:根据输出,ROW/COLUMN索引似乎是相反的

  • `替换(矩阵(0, max(df$ROW), max(df$COLUMN)), as.matrix(df[c("ROW", "COLUMN")]), df$VALUE)` (2认同)