r - R中的矢量化循环,将矩阵中每一行中的所有值相加
问题描述
我没有找到我的问题的答案,虽然它看起来很容易 - 如果已经回答,请原谅我。我正在处理定向加权网络数据,我想通过对每个邻居的值求和并通过边的权重加权来计算每个节点对其传出邻居的某些属性的“展示”。
使用循环很容易做到这一点。g[] 是我得到的邻接矩阵:
library(igraph)
#Data example
relations <- data.frame(from=c("Bob", "Cecil", "Cecil", "David", "David", "Esmeralda"),
to=c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice"),
weight=c(4,5,5,2,1,1))
g <- graph.data.frame(relations, directed=TRUE)
# Loop
for (i in c(1:nrow(g[]))){
nodes$neigh_activity[[i]] <- sum(nodes[which(g[i,]>0), ]$activity*g[i, which(g[i,]>0)])
}
我想对这个循环进行矢量化。事实上,在我的实际数据中,我有超过 90,000 个节点,所以需要一段时间......我听说矢量化可以大大减少计算时间。
我不确定要走的路,因为我无法输入向量,g[i,]
否则总和会中断。我尝试使用 split 并使用向量列表,但这似乎效率更低。
太感谢了!罗宾
解决方案
从这个答案:Matrix-class (dgCMatrix) 的 rowsum 函数的等价物
Matrix::rowSums(g[])
推荐阅读
- javascript - 将数据从节点服务器传递到来自 3rd 方 API 的 React
- python - 更改绘图地图的参数
- wordpress - 如何在google上查看网站的搜索结果?
- javascript - 在一个字符串中,如何检查另一个字符前面的前一个字符是否是空格?
- ruby-on-rails - 用于连接表的 Rails 查询
- asp.net - 在没有 OpenID Connect 和 Razor 页面的情况下使用 ASP.NET 5.0 存储用户数据
- php - Packagist 包 - 无法针对 GitHub 更新/同步
- javascript - 从循环中的值创建数组
- flutter - 使用同步融合颤振日期选择器的垂直选择器
- google-bigquery - 即使启用了流式导出,Firebase Analytics 也不会将事件表导出到 Bigquery