2013-11-20 241 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