2013-11-20 210 views
0

我是帕多瓦大学的博士生,我试图在R cran v。3.0.1中编写一个小脚本(第一个!)来模拟流行病学。 我想改变一个883值的矢量的值,基于用shapefile创建的nb2mat的邻居矩阵:如果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)) {" 

我认为这是在陈述一个错误,但如果我不明白该如何解决呢? 谢谢大家! 伊利莎

+1

我同意这个问题是在这里题外话,因为它没有统计内容。就我个人而言,我认为它对于计算器来说质量太差。 @Phalaen:你列出的错误与代码不匹配(while vs. if)。有一个)在> 0)之后的if子句中缺少括号) - 或者((vectorID [i] - 中的一个太多),并且子句体也没有多大意义。 – Momo

+0

此问题似乎是偏离主题因为它是关于编程的。 – Momo

回答

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之前mucch。

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

btw:for循环在R中很慢。如果知道vectorID的最终大小,请尝试预先分配完整的矩阵。这会加速一点点。

+0

你是对的,谢谢!!!!! – 2013-11-20 10:55:26