【问题标题】:Simple for loop for graph图的简单 for 循环
【发布时间】:2015-02-18 16:24:01
【问题描述】:

所以我已经生成了一个权重矩阵 B 和一个向量 b,我想选择节点的顺序。

我的b=(3 5 1 2 4)

现在我想从向量 B 中对我遍历的边的权重求和。即我想求和

B[3,5]+B[5,1]+...

所以我说:

for(i in 1:n-1){
    s=sum(B[b[i],b[i+1]])    
}
s

但所有这些都会产生这样的输出:

[1] 1

我做了什么傻事吗?

【问题讨论】:

  • 矩阵B的内容是什么(你可以发dput(B)n是什么?(即我们怎么知道1不是正确答案?)
  • 对于初学者,您可能想要 1) 在循环之前设置 s = 0,2) 在循环内将行更改为 s = s + ...,以及 3) 将 1:n-1 更改为 1:(n-1) (否则你会得到0,1...n-1 而不是1,2...n-1
  • @DavidRobinson 所以我目前的 B 为:matrix(c(12,5, 8,0,11,11,1,13,1,15,14, 4,14,12,12,1,7,8,8,13,5, 0,14,3,14), nrow=5)n=nrow(B) 我可以看出 1 仅从 B 来看是不正确的(是的,应该事先发布)。感谢(n-1)的提示,我不知道!当您说 s=s+... 时,您是什么意思?因为我必须事先定义's'而没有先验值。是的,for 循环似乎什么也没做,因为我现在只得到 s=0

标签: r loops for-loop graph nodes


【解决方案1】:

你可以试试:

sum(B[cbind(head(b,-1),b[-1])])

仅供参考,您的循环应该是:

s = 0
for(i in 1:n-1){
    s=s + B[b[i],b[i+1]]    
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-07
    • 2014-01-15
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    相关资源
    最近更新 更多