2016-05-22 26 views
-5

Ich möchteprüfen zwei Bedingungen in R

if(((i-1)*80)<j<((i*(80-1))) 
     print i 
+2

Verwenden Sie '&' zwischen Ihren beiden Tests und schauen Sie sich '' Logic' 'und [diese Seite] an (http://stackoverflow.com/help/how-to-ask) –

+0

zB 'x <- 1:10; x > 3 & x <8' –

Antwort

2

R Parser akzeptiert keine eine Variable für zwei Bedingungen überprüfen zwischen zwei Ungleichheiten eingeklemmt. Sie müssen eine logische Verbindung bilden:

if((i-1)*80 < j & j < (i*(80-1)) { print(i) } 

Aber ich fürchte, dass Sie denken, dies ohne weitere Unterstützung bei der Programmierung erfolgreich sein wird und das würde nur zutreffen, wenn R als Makro-Prozessor funktioniert, die eine implizite Schleife hat, wie Sie mit SAS oder SPSS. R würde eine explizite Schleife oder einen vektorisierten Aufruf benötigen, um irgendetwas Interessantes zu tun. Sie sollten die Ziele dieser Codezeile erklären, damit eine vollständigere Antwort angeboten werden kann. Ich befürchte auch, dass Sie tatsächlich die ifelse Funktion benötigen, da Rs Version if nur einen einzigen logischen Wert auf einmal testen wird, während ifelse oder Rs logische Operatoren selbst für "vektorisierte" Situationen ausgelegt sind.

+0

Daten <- read.csv ("bins.txt", header = FALSCH) for (j in Daten) { for (i in 1:20) { m = (i-1) * 80 n = (i * 80) -1 if (m Arushi

+0

Diese Aussage für mich gearbeitet: my_vector [Länge (my_vector) +1] = i – Arushi