我认为这是关于R.的基本问题
我有一个3列的数据框,其中前两列分别代表行和colunm索引,最后一列是值。简单地说,数据是稀疏矩阵格式。我想将其转换为标准矩阵格式。我该怎么办?代码
mat[data[,1],data[,2]]=data[,3]
不对。
答案 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
通过使用matrix
或as.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))