使用索引递增到矩阵

有没有办法使用该矩阵的索引来增加矩阵的特定行和列,并且如果索引重复,则同时执行两次。例如,使用以下代码:


rows <- c(1, 2, 3, 4, 1)
cols <- c(4, 2, 5, 1, 4)
freq <- matrix(0, 5, 5)

freq[cbind(rows, cols)] <- freq[cbind(rows, cols)] + 1
freq

我在特定的行和列上得到一个,但由于 (1, 4) 组合重复两次,我想找到一种方法将另一个 1 添加到它并使用 R 的矩阵索引以计算有效的方式使其成为两个像上面一样。

提前致谢!

回答

如果你不介意使用igraph包,你可以通过get.adjacency

library(igraph)
get.adjacency(
  graph_from_data_frame(data.frame(rows, cols), vertices = data.frame(1:nrow(freq))),
  sparse = FALSE
)

这使

  1 2 3 4 5
1 0 0 0 2 0
2 0 1 0 0 0
3 0 0 0 0 1
4 1 0 0 0 0
5 0 0 0 0 0

  • As `sparseMatrix` was mentioned but no example; I suppose this was what was intended `Matrix::sparseMatrix(i=rows, j=cols, x=1, dims=c(5,5))`

以上是使用索引递增到矩阵的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>