2013-02-28 18 views
19

Ich habe eine Matrix, die aus 13 Spalten (PC genannt) besteht. Ich möchte eine neue Matrix erstellen, die nur die Zeilen enthält, die einen Wert zwischen 4 und 8 haben (EUR genannt). Ich habe versucht, mit dieser Aussage:R: `which` Aussage mit mehreren Bedingungen

EUR <- PCs[which(PCs$V13 < 9 && PCs$V13 > 3), ] 

die leider nicht ... funktioniert (ich nur eine Zeile aus, während es gibt Hunderte)

Jeder weiß, was mit diesem Befehl falsch ist?

+1

Beispieldaten können anderen helfen, Ihre Frage zu beantworten. –

+0

@Abdel Genau wie Ryan Thompson gesagt hat, können Sie nach den Beschreibungen über &, && und |, || suchen in der Bedienungsanleitung. – sikisis

Antwort

31

Die Funktion && ist nicht vektorisiert. Sie benötigen die & Funktion:

EUR <- PCs[which(PCs$V13 < 9 & PCs$V13 > 3), ] 
+2

Yeah, im Handbuch schreibt es, dass "& und && angeben, dass logisches UND und | und || logisches ODER anzeigen. Die kürzere Form führt elementweise Vergleiche ähnlich wie arithmetische Operatoren durch. Die längere Form wertet von links nach rechts nur die erstes Element jedes Vektors. Die Auswertung schreitet nur fort, bis das Ergebnis bestimmt ist. Die längere Form ist für die Programmierung des Steuerungsflusses geeignet und wird typischerweise in if-Klauseln bevorzugt. – sikisis