2017-02-23 14 views
0

Ich habe eine schwierige Zeit versuchen, meine If-Anweisungen für einen Code ausführen, ich schreibe in denen ich versuche, die Anzahl der wahren Werte pro Zeile für alle zu analysieren die Reihen in einer spärlichen Matrix (Matte).Wenn Anweisungen in R-Markdown/R Konsole

counter=0 
geneCount=0 
columnIndex=-1 
cols=20 
rows=20 
for (col in 0:cols){ 
    columnIndex=columnIndex+1 
    for (row in 0:rows){ 
    for (col in 0:cols){ 
     if (mat[row,col] = TRUE){ 
     counter=counter+1 
     } 
     if(counter = 2){ 
     sigArray[columnIndex]=sigArray[columnIndex]+1 
     counter=0 
     next 
     } 
    } 
    } 
} 

Ich erhalte die Fehlermeldung:

Error: unexpected '=' in: 
" for (col in 0:cols){ 
     if (mat[row,col] =" 

zum ersten if-Anweisung. Ich habe versucht, double equals zu verwenden und das hat auch nicht funktioniert.

Vielen Dank!

+2

Try '==' statt. Ein einzelnes Gleichheitszeichen wird als Zuweisung interpretiert (wie 'counter = 0'). Dachte man, stattdessen die 'apply'-Funktionsfamilie zu verwenden? –

+0

Oder nur 'if (mat [row, col]) {' wenn Ihre Matrix aus logischen Elementen besteht. Sie können auch 'if (isTRUE (mat [row, col])) {' verwenden, um konservativer zu sein. – lmo

Antwort

1

Es gibt mindestens zwei Probleme. Das erste Problem, wie Sie dachten, ist, dass wenn Aussagen logische Tests sind und daher Gleichheitsprüfungsoperatoren benötigen. Sie müssen == verwenden, um auf Gleichheit zu testen. Das zweite Problem ist, dass R-Indizes für Zeilen und Spalten eine 1 beginnen, nicht Null. Also, vorausgesetzt, Sie haben tatsächlich 21 Zeilen und Spalten im Dataset (das heißt, so daß 0 bis 20 hätte gearbeitet), ich glaube, Sie Ihre Syntax wie folgt ändern, bei:

counter=0 
geneCount=0 
columnIndex=0 
cols=21 
rows=21 
for (col in 1:cols){ 
    columnIndex=columnIndex+1 
    for (row in 1:rows){ 
    for (col in 1:cols){ 
     if (mat[row,col] == TRUE){ 
     counter=counter+1 
     } 
     if(counter == 2){ 
     sigArray[columnIndex]=sigArray[columnIndex]+1 
     counter=0 
     next 
     } 
    } 
    } 
} 
Verwandte Themen