循环条件中的多个if语句

时间:2013-11-20 10:31:33

标签: r estimation

我是帕多瓦大学的博士生,我正在尝试在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语句中的错误,但我无法理解如何解决它... 谢谢大家! Elisa

1 个答案:

答案 0 :(得分: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) 
        } 
    } 
}

您在(声明中vectorID之前有一个if来粘贴。

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

btw:for循环在R中非常慢。如果知道vectorID的结束大小,请尝试预先分配完整矩阵。这样可以加快速度。