我是帕多瓦大学的博士生,我正在尝试在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
答案 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
的结束大小,请尝试预先分配完整矩阵。这样可以加快速度。