【问题标题】:Multiple if statement in loop condition循环条件中的多个 if 语句
【发布时间】:2013-11-20 10:31:32
【问题描述】:

我是帕多瓦大学的博士生,我正在尝试在 R cran v. 3.0.1 中编写一个小脚本(第一个!),以模拟流行病学。 我想根据 shapefile 中使用 nb2mat 构造的邻居矩阵更改 883 个值的向量的值:如果 i 和 j(两个单元格)是邻居(矩阵)并且 i 或 j 在向量中具有正值,我想将 i 和 j 的值都转换为 1(正),否则 i 和 j 的值应该保持为 0。当我启动下一个小脚本时:

for(i in 1:883) 
 { for(j in 1:883) 
  { if(MatriceDist[i,j] > 0 & ((vectorID[i] > 0 | vectorID[j] > 0)) { 
         vectorID[i] = 1 & vectorID[j] = 1 
                print(vectorID) 
 } } } 

软件给出的答案是:

Error: unexpected '{' in: 
" { for(j in 1:883) 
 { while(MatriceDist[i,j] > 0 & ((vectorID[i] > 0 | vectorID[j] > 0)) {" 

我认为这是 if 语句中的错误,但我不明白如何解决它... 谢谢大家! 伊丽莎

【问题讨论】:

  • 我同意这个问题在这里是题外话,因为它没有统计内容。我个人认为stackoverflow的质量也太低了。 @Phalaen:您列出的错误与代码不匹配(同时与如果)。 >0)) 之后的 if 子句中缺少一个 ) 括号 - 或者 ((vectorID[i] ) 中缺少一个括号 - 而且子句主体对我来说也没有多大意义。
  • 这个问题似乎是题外话,因为它是关于编程的。

标签: r estimation


【解决方案1】:

检查你的括号:-)

for(i in 1:883) { 
    for(j in 1:883) { 
        if(MatriceDist[i,j] > 0 & (vectorID[i] > 0 | vectorID[j] > 0)) { vectorID[i] = 1 & vectorID[j] = 1 print(vectorID) 
        } 
    } 
}

if 声明中,vectorID 之前有一个 (

请仔细检查语句中现在指定的条件是否仍然是您需要的条件。

btw:R 中的 for 循环非常慢。如果您知道 vectorID 的最终大小,请尝试预先分配完整的矩阵。这会加快速度。

【讨论】:

    猜你喜欢
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    • 2015-09-15
    • 2014-02-20
    • 2022-11-26
    • 2017-10-29
    • 1970-01-01
    相关资源
    最近更新 更多