我有一个数据框,其中包含行位置,列位置和值的列表,如下所示:
combs <- as.data.frame(t(combn(1:10,2)))
colnames(combs) <- c('row','column')
combs$value <- rnorm(nrow(combs))
我想填补这些值,使得每一个矩阵value
的矩阵出现在准确的位置指定的row
和column
。我想我可以手动完成
mat <- matrix(nrow=10,ncol=10)
for(i in 1:nrow(combs)) {
mat[combs[i,'row'],combs[i,'column']] <- combs[i,'value']
}
但是,肯定有一种更优雅的方法可以在R中完成此操作吗?
像这样:
mat <- matrix(nrow = 10, ncol = 10)
mat[cbind(combs$row, combs$column)] <- combs$value
您还可以考虑使用Matrix包构建稀疏矩阵:
library(Matrix)
mat <- sparseMatrix(i = combs$row, j = combs$column, x = combs$value,
dims = c(10, 10))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句